Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何正确重写$.fn.position函数_Javascript_Jquery_Jquery Ui - Fatal编程技术网

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

Javascript 如何正确重写$.fn.position函数,javascript,jquery,jquery-ui,Javascript,Jquery,Jquery Ui,我需要使默认的collision=“fit”无处不在,而不是“flip”。所以我决定重写$.fn.position函数。但是,有些东西断了,它不工作:元素不移动,也不显示错误。它什么也不做。我不知道为什么。以下是我写的: (function($) { var orig = $.fn.position; $.fn.position = function(options){ if ( options ){if ( !options.collision ){

我需要使默认的collision=“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);

当没有
选项时,您没有默认值

(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);

最好使用
extend
方法:

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

你面临的问题是什么?“不起作用”并没有给我们太多的洞察力。