jQuery可以正确访问每个函数中的插件对象

时间:2013-01-27 16:16:26

标签: jquery object jquery-plugins chaining

是否可以在each - 函数中访问jQuery的插件对象?

var pluginName = 'pluginName',
    Plugin = function(elem){
        elem.add = function () {
            console.log('foo');
            return this;
        };
    };

$.fn[pluginName] = function () {

    // this works
    new Plugin(this);
    return this;

    // this doesn't!
    // return this.each(function(){
    //     new Plugin($(this));
    // });
};

var plugin = $('.foo').pluginName();
plugin.add();

2 个答案:

答案 0 :(得分:0)

进入.each()时的上下文与外部的上下文不同。您可以使用如下变量维护上下文:

var _this = this;
return this.each(function(){
     new Plugin($(_this));
});

答案 1 :(得分:0)

Mash几乎是正确的,但正确的代码是,

var _this = this;
return _this.each(function(){
     console.log($(this));
     new Plugin($(this));
});

虽然我无法理解这一点,但这个增加应该做什么?