Javascript 如何正确重写$.fn.position函数
我需要使默认的collision=“fit”无处不在,而不是“flip”。所以我决定重写$.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 ){
(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);
你面临的问题是什么?“不起作用”并没有给我们太多的洞察力。