我的團隊正在使用jQuery Mobile構建移動網站,而且隨着發佈日期的臨近,性能越來越受到關注。我所做的一個觀察是,在我們的代碼中,我們有很多撥打live()
和delegate()
的電話;但事實上,據我所知,我們只是不斷使用這些方法將事件處理程序附加到已經存在的DOM節點(和將始終存在,在我們的應用程序的情況下)。bind()比live()和delegate()更快嗎?
鑑於live()
和delegate()
都旨在於在DOM以後可能出現節點提供動態綁定,並考慮到每一種涉及已起泡一路攀升至document
根節點處理事件,我想知道是否可以通過將這些電話(如適用)更改爲bind()
來改善性能。
我知道,我也許可以在某些方面我自己測試這一點,但我沒有經驗的大量做性能測試使用JavaScript和我想它可能會帶我長於找出這對我來說只是問社區。有沒有人測試過這個?有一個可衡量的差異嗎?或將切換這些live()
和delegate()
調用到bind()
是浪費時間嗎?
如您所知,事件可能會發生。live()方法並不關心節點是否出現在DOM後面,或者它從一開始就在那裏,它只是附加一個監聽器來執行「document」全局變量,並偵聽某個事件是否來自適當的對象並觸發功能如果它。至於你的問題:「我們應該忘記小效率,約97%的時間:過早優化是萬惡之源。」 – Mironor
@Mironor:是的,*過早*優化。 –