您需要在您的默認值來定義你的默認名稱和Foo事件DECL aration:
$.fn.myPlugin.defaults = {
name: 'test',
onFoo: function() {
alert(this.name);
},
onFoo2: function() {
// your default behaviour for foo2
}
};
然後,當有人撥打你的插件,就可以覆蓋默認值,在這種情況下name
:
$("#myControl").myPlugin({
name: 'test2'
});
注意,他們並不需要重寫onFoo,因爲它會顯示帶有test2的警報。無論如何,如果他們需要重寫它做不同的事情,那麼他們應該:
$("#myControl").myPlugin({
name: 'test2',
onFoo: function() {
alert('onFoo overrired');
},
onFoo2: function() {
alert('onFoo2 overrired');
}
});
在你的插件,你調用foo的方法爲
(function($) {
$.fn.myPlugin = function(options) {
var opt = $.extend({}, $.fn.myPlugin.defaults, options);
// if onFoo is defined then call it
if (opt.onFoo) {
opt.onFoo();
}
// if onFoo2 is defined then call it
if (opt.onFoo2) {
opt.onFoo2();
}
}
$.fn.myPlugin.defaults = {
name: 'test',
onFoo: function() {
alert(this.name);
},
onFoo2: function() {
// your default behaviour for foo2
}
};
});
你應該使用這種技術的公共方法/屬性,你想暴露給你的插件的用戶。 我沒有測試,但應該工作
編輯 您需要檢查,如果該事件被設置調用前:
// if onFoo is defined (not null) then call it
if (opt.onFoo) {
opt.onFoo();
}
你已經在爲onFoo和onFoo2事件,但你的插件的用戶可以選擇禁用它:
$("#myControl").myPlugin({
onFoo: null
});
在這種情況下,雖然你已經定義了一個onFoo
事件,你的插件的用戶決定ignor通過將其設置爲null
。所以,即使你已經定義了一個事件,你永遠不知道別人會用它來做什麼,因此最好保持安全並檢查是否爲空。
再次,你需要小心你暴露給最終用戶的東西,因爲設置/取消設置的事件不應該打破你的插件
該代碼在語法上不合法的基本功能。 – Pointy 2011-05-18 13:08:32
你看過http://docs.jquery.com/Plugins/Authoring嗎?它可能有幫助... – 2011-05-18 13:21:37