2013-08-07 182 views
0

最近我讀到John Resig的書Secrets of Javascript Ninja,約 元素事件一章中,他寫道:Javascript:是否真的需要自己管理事件處理程序?

對於一些原因,這是有利的不是事件 處理程序直接綁定到的元素。

所以在他的下一個代碼,他定義自定義addEventdetacheventdispatchertriggerevent方法,和存儲事件處理程序到緩存隊列等。

儘管瀏覽器兼容性問題,是否有任何其他原因不直接綁定到元素的事件處理程序?

+0

我可能更喜歡的一種情況是,如果我想將處理程序添加到頁面中的很多元素(如列表頁面中的編輯按鈕處理程序或50個項目) –

+1

是否將偵聽器添加到元素或將「委派」元素與(未指定的)瀏覽器可比性問題無關。它與應用程序設計有關,例如將單個監聽器添加到處理表上所有單擊事件的表中而不是將偵聽器添加到每個需要單個事件的單元格可能是有利的(更簡單的邏輯,更容易維護等)。 – RobG

回答

2

使用此模型的一個原因是當您處理動態元素時。

如果你想在創建每個元素後附加處理程序到元素本身,你需要附加處理程序,但我更喜歡使用事件委託並註冊處理程序到一個元素,這將是總是在那裏,然後過濾目標元素。

0

原因在後面的章節中給出。我只是複製它以供參考:

■事件實例已修復。

■函數上下文被設置爲目標元素。

■Event實例作爲唯一參數傳遞給處理程序。

■事件處理程序將始終按其綁定順序執行。

除此之外,您還可以更清晰地控制處理程序的移除。

0

如果您保留對每個人及其信息的引用,那麼跟蹤您的事件偵聽器就容易多了。它給你一些額外的控制;現在取決於您何時需要使用它。

相關問題