jQuery插件创作:解释“this”关键字?

时间:2010-08-27 15:17:39

标签: jquery jquery-plugins this

我已经用jQuery编写了大约2年的编码,但我从来没有在插件中完成它。我想改变这个。我发现了一些网站,解释了如何创建插件,我理解了基础知识。

我不理解的部分是使用this关键字。这是一个简单的插件示例:

(function($){
  $.fn.myPlugin = function(options)
  {
    // Do whatever
    return this.each(function(){
      element = $(this);
    });
  }
  $.fn.myPlugin.init = function()
  {
    // Initiate plugin
  }
})(jQuery);

在我的代码的第5行,我有this.each。在这种情况下,this关键字引用选择器中的所有元素。以下行使用$(this) 当前元素,就像我在.click(function(){$(this).hide();})中执行此操作一样。

现在,在OO逻辑中,通常我们有一个this关键字来引用内部函数或属性。如果在$.fn.myPlugin我想要致电$.fn.myPlugin.init(),我希望可以使用this.init()这样的内容,但它似乎无效。

此外,我希望能够以类似的方式定义类属性,例如this.myVariable = "my value"

因此,如果有人能够解释我所缺少的任何东西来理解jQuery的插件概念,或者通过相关链接指向正确的方向,我会感激帮助!如果我的解释不够清楚,请告诉我,我会尽力让它变得更好,但现在我的脑海里有点模糊。 ;)

1 个答案:

答案 0 :(得分:2)

在进入.each()之前,this实际上是包含匹配DOM元素集的jQuery对象。

如果您想以这种方式调用该函数,则需要在添加它的范围内调用它。 $.fn.myPlugin

this.myPlugin.init();

或者每个人都喜欢这样:

$(this).myPlugin.init();

或直接这样:

$.fn.myPlugin.init();