看板 Ajax 關於我們 聯絡資訊
我有個頁面要做許多事件綁定 最簡單的寫法是像這樣 window.onload = function() { bind('.delete_button_1').(function() {}); bind('.delete_button_2').(function() {}); ...etc bind('.add_button_1').(function() {}); bind('.add_button_2').(function() {}); ...etc } 這樣寫雖然會動沒問題 但寫很多行這類的code看起來很雜 會不好維護 目前我是這樣改 嘗試模組化 (改法一) window.onload = function() { function initDelete() { bind('.delete_button_1').(function() {}); bind('.delete_button_2').(function() {}); } function initAdd() { bind('.add_button_1').(function() {}); bind('.add_button_2').(function() {}); } initDelete(); initAdd(); } 看起來是比較容易懂 但其實是有點沒必要的包裝 不過這麼做有個好處是 會比較容易做錯誤處理 比如delete是次要的功能 可以允許失敗 就可以try catch: try { initDelete(); } catch (e) } initAdd() 其實還有個改法二 寫註解區隔就好 >.< /************************************************ * initDelete start ************************************************ */ bind('.delete_button_1').(function() {}); bind('.delete_button_2').(function() {}); ...etc /************************************************* * initDelete end ************************************************* */ 1.但改法一二其實都不夠好 想知道還有什麼更好的寫法? 比如是不是可以用OO化的module pattern 定義delete, add為public function 再定義init()去load這些public function? 2.次要功能(可允許失敗) 建議全部用try catch包起來嗎? 還是最好都全部成功 不會有失敗的可能 就不用try catch 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 115.82.115.113 ※ 編輯: tomin 來自: 115.82.115.113 (08/24 12:52)
noxhsu:有array的話,可以用$.each掃看看? 08/24 13:04
s25g5d4:何不考慮 event delegate 08/24 14:08
tomin:已經用delegate囉 只是delegate清單很長 想整理 08/24 21:18
dlikeayu:用backbone的View去建你的按鈕或是按鈕群組 08/26 09:28
dlikeayu:非常好管理 08/26 09:28
dlikeayu:你要的功能能完完全全自定義在裏面 08/26 09:29
dlikeayu:可以把一個按鈕當一個Class去new 出來 08/26 09:30
dlikeayu:也可以把你的按鈕群組當一個物件new 出來 08/26 09:30
dlikeayu:當然都是用Class 去寫了,這管理彈性可想而知的簡單方便 08/26 09:31
tomin:樓上說得很令人心動 我再研究看看 感謝 08/26 22:51