如何正确重写$ .fn.position函数

时间:2016-11-28 13:03:30

标签: javascript jquery jquery-ui

我需要进行默认碰撞=" fit"无处不在"翻转"。所以我决定重写$ .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);

对我来说没问题。如果有更好的方法或如何解决这个问题,请帮助。

谢谢

编辑: 我是一个白痴。必须使用orig apply的参数。:

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

2 个答案:

答案 0 :(得分:0)

当没有null

时,您不会默认值
options

答案 1 :(得分:0)

最好使用extend方法:

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