2016-11-28 3 views
2

"flip"ではなく "collision =" 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); 

私には大丈夫です。それを行うより良い方法がある場合、またはこの問題を解決する方法があれば、助けてください。私は馬鹿だ :

はあなたに

EDITありがとうございます。 ORIGとお奨め使用引数が適用されます:あなたは値をデフォルトにしていない

(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

extend方法を使用するには、no 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

それは良いでしょうがありませんとき:

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