我需要使默认碰撞=“ fit”到处而不是“ flip”。因此,我决定重写$ .fn.position函数。但是,某些东西坏了,它不起作用:元素不移动,并且不显示错误。它什么也没做。我不知道为什么。这是我写的:

(function($) {
    var orig = $.fn.position;
    $.fn.position = function(options){
        if ( options ){if ( !options.collision ){
            options.collision = "fit";
        }}
        return orig.apply(this, options);
    }
})(jQuery);


对我来说还不错。如果有更好的方法或解决此问题,请提供帮助。

谢谢

编辑:
我是一个白痴。必须在原始应用中使用参数:

(function($) {
    var orig = $.fn.position;
    $.fn.position = function(options){
        if ( options ){
            if ( !options.collision ){
                options.collision = "fit";
            }
        }
        return orig.apply(this, arguments);
    }
})(jQuery);

最佳答案

没有options时,您没有默认值

(function($) {
    var orig = $.fn.position;
    $.fn.position = function(options){
        if (!options) {
             options = {collision: "fit"}
        }

        if ( !options.collision ){
            options.collision = "fit";
        }
        return orig.apply(this, options);
    }
})(jQuery);

关于javascript - 如何正确重写$ .fn.position函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40845038/

10-09 21:42