jQuery自定义函数- this.each

jQuery custom function - this.each

本文关键字:each this 自定义函数 jQuery      更新时间:2023-09-26

我需要一些关于我正在创建的jQuery插件的帮助。

$.fn.mymethod = {
  init : function(options){
      this.each(function() {
          var settings = {  };
          if(options){ $.extend(settings, options); }
      });
      return this;
  }
}
$("input[type=text]").mymethod.init();

它似乎不工作,我得到一个错误: TypeError:这个。each在

行上不是函数

我希望有人能给我指个正确的方向。

谢谢!

您将希望这样做,而不需要额外的对象引用:

$.fn.mymethodInit = function(options){
      this.each(function() {
          var settings = {  };
          if(options){ $.extend(settings, options); }
      });
      return this;
}

当你插入额外的对象时,就像你原来的提议一样,这意味着它必须被调用为:

$(...).mymethod.init()

并且,这样调用它,意味着this指针是mymethod,而不是您需要的jQuery对象。这只是Javascript在调用foo.bar.method()时如何设置this指针的结果。

有一些变通方法,但通常都是丑陋和复杂的,所以放弃额外的点语法。一种常见的解决方法是在所有方法上使用一个共同的前缀:

$.fn.mymethod_Init = function() {...}
$.fn.mymethod_Save = function() {...}

,它与您尝试使用的名称空间一样唯一,但不会产生您遇到的问题。