我創建使用模式從Plugins Authoring頁的jQuery插件:在私有方法中使用`this`的jQuery插件設計模式?
(function($) {
$.fn.myPlugin = function(settings) {
var config = {'foo': 'bar'};
if (settings) $.extend(config, settings);
this.each(function() {
// element-specific code here
});
return this;
};
})(jQuery);
我的代碼要求操縱this
幾個私有方法。我正在使用apply(this, arguments)
模式調用這些私有方法。有沒有設計我的插件的方法,我不必打電話申請通過this
從方法到方法?
我修改插件代碼看起來大致是這樣的:
(function($) {
$.fn.myPlugin = function(settings) {
var config = {'foo': 'bar'};
if (settings) $.extend(config, settings);
this.each(function() {
method1.apply(this);
});
return this;
};
function method1() {
// do stuff with $(this)
method2.apply(this);
}
function method2() {
// do stuff with $(this), etc...
}
})(jQuery);
你應該使用'me'不完全負責這些方法,而不是'$(me)','this'已經是一個jQuery對象,在重新包裝它時它是一個不必要的克隆。我會在這裏閱讀這樣的常見錯誤:http://remysharp.com/2010/06/03/signs-of-a-poorly-written-jquery-plugin/ – 2010-06-05 20:57:00
我不使用jQuery自己,它的一個蹩腳的圖書館:)但我會更新答案 – 2010-06-05 22:26:45