jQuery自定义函数 - this.each

时间:2015-10-15 05:53:57

标签: javascript jquery jquery-plugins

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

$.fn.mymethod = {
  init : function(options){

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

      });

      return this;
  }
}

$("input[type=text]").mymethod.init();

它似乎不起作用,我收到一个错误: TypeError:this.each不是

上的函数

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

谢谢!

1 个答案:

答案 0 :(得分:0)

如果没有额外的对象引用级别,您将希望以这种方式执行此操作:

$.fn.mymethodInit = function(options){

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

      });

      return this;
}

当您按照原始提案中的方式插入额外对象时,这意味着它必须被调用为:

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

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

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

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

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