我有一個簡單的插件,它有init,close和open函數。我有一個調用這個插件的html模板數組。只是對於某個模板,我想對這個插件做一些稍微不同的行爲,比如說可以在open函數中添加一個不同的類,並在關閉時刪除相同的類。什麼是做這件事的優雅方式?我應該找到html的id並在同一個插件的open和close函數中做一個if else,或者有更好的方法嗎?如何調用具有稍微不同行爲的插件?
;(function ($, window, document, undefined) {
function Plugin(element, options) {
Window = this;
this.element = element;
this._name = pluginName;
this.init(element);
}
Plugin.prototype = {
init: function(element) {
},
close:function(e){
//removes a class and hides the element
},
open:function(element){
//adds a class and shows the element
}
}
//Extend Global jQuery (where we actually add the plugin!)
$.fn[pluginName] = function (options) {
plugin = $.data(window, 'plugin_' + pluginName);
if (!(plugin instanceof Plugin)) {
$.data(window, 'plugin_' + pluginName,
plugin = new Plugin(this, options));
}
return $Extend(this).each(function() {
$.data(this, 'plugin_' + pluginName, plugin);
});
};
}(jQuery, window, document));
或者使用大多數jQuery插件中使用的'extend()'成語將用戶的選項合併到默認選項對象中。 – Barmar
您必須做的另一件事是記住每個元素使用的選項。這可以使用'data()'完成。 – Barmar
@Barmar兩個好的指針。 – adamb