jQuery扩展:为什么它不适用于所有匹配元素?

时间:2010-08-03 22:55:04

标签: javascript jquery

我的扩展程序如下:

$.fn.crazything = function() {
    var self = $(this);
    // do some crazy stuff
    return self;
}

当我称之为:

$("div.crazydiv").crazything();

它有效,但仅限于第一个匹配的div。如果我在页面上有多个div,我需要这样做:

$("div.crazydiv").each(function(i) { $(this).crazything (); });

为什么会这样,我如何重写我的扩展以处理多个div?

1 个答案:

答案 0 :(得分:6)

大多数jQuery插件都使用这种处理你疯狂东西的模式:

(function($) {
  $.fn.crazything = function() {
    // allow setup on jQuery objects that conatin multiple elements:
    return this.each(function() {
      // this function is called once for each element in the jQuery object
      var self = $(this);
      // do some crazy stuff
    });
  };
})(jQuery);