這裏有一個想法,你可以創建一個存儲所有功能的對象,這些功能也知道如何放棄功能
var handlers = {
getHandler: function (str) {
return this[str];
},
'#addRecordBtn': function() {
alert("Adding Record");
AddValueToDB();
},
'#refreshBtn': function() {
alert("Refresh Records");
ListDBValues();
}
};
然後使用此表單應用所有處理程序。
$('#addRecordBtn').on('click', handlers.getHandler('#addRecordBtn'));
$('#refreshBtn').on('click', handlers.getHandler('#refreshBtn'));
優化的時間,如果你想獲得真正看中的,你分配一個唯一的ID給每個按鈕的約定
var handlers = {
defer: function() {
return function(){
handlers[$(this).attr('id')](arguments);
};
},
registerHandlers: function() {
for (var key in this) {
if (this.hasOwnProperty(key) && typeof(key) === "string") {
$('#' + key).on('click', this.defer());
}
}
},
'addRecordBtn': function() {
alert("Adding Record");
AddValueToDB();
},
'refreshBtn': function() {
alert("Refresh Records");
ListDBValues();
}
};
調用它
$('#addRecordBtn').on('click', handlers.defer());
$('#refreshBtn').on('click', handlers.defer());
或自動註冊的一切
handlers.registerHandlers();
Here is a fiddle of my solution
在這一過程中,我會進一步走一步,並給所有的按鈕,你需要一個類,然後*一個*處理程序通過ID添加所有功能。即'('click',handlers.getHandler($(this).attr('id')));' – ArtOfCode
@ArtOfCode我試圖想如果這可行。這不會束縛於整條線所在的任何物體。例如窗口對象? – t3dodson
從來沒有嘗試過,我只是想出了!讓我快點走吧 – ArtOfCode