2016-11-28 66 views
2

我需要使默认碰撞=“适合”到处,而不是“翻转”。所以我决定重写$ .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); 
+0

是什么你面临的问题是什么? “不起作用”并不能给我们很多见解。 –

回答

0

你是不是默认值时,有没有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); 
0

这将是更好地使用extend方法:

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