jquery插件中的闭包和上下文

时间:2012-08-30 02:52:30

标签: javascript jquery closures

我已经阅读了很多关于jquery插件中的闭包和设计模式(甚至是一些相互矛盾的事情),但我并不完全理解它...... 我有这个代码,已经有效,但我不知道这是我最好的做法...

(function($) {

    var methods = { 
               method1 : function() { .... }
                  }

    return this.each(function() {

    $(this).change(function()
        {
        methods.method1.apply($(this));
        })

    });

})(jQuery);

我怀疑是在事件委托功能内...我应该在那里使用闭包而不是申请吗?什么是最佳做法?我该如何定义那个闭包? 感谢

2 个答案:

答案 0 :(得分:0)

你从这里看到的东西看起来是正确的。 (虽然jQuery代码有时难以通过视觉验证!)当调用事件委托时,this将是引发事件的DOM元素。那里不需要关闭。

答案 1 :(得分:0)

除了其他答案之外,this.each内部只有$(this).change(...)是多余的。如果你改成它:

// no this.each
this.change(function() {
    // ...
});

然后它应该完全相同,但更简洁,更有说服力。