簡體   English   中英

調用jquery .on(document.body)而不是特定元素是否有缺點

[英]Is there a downside to calling jquery .on(document.body) rather than the specific element

我正在將項目中使用的jQuery版本升級到最新版本。 .live函數在很多地方用於更改動態創建的顯示並且運行良好,但.live功能在jQuery的更高版本中被刪除,因此需要重新組裝。

作為標准化編碼的一種方式,我正在考慮將函數稱為:

$(document.body).on('click', '#clickableElement', function(){})

而不是

$("#clickableElement').on('click', function(){})

即使不會對動態創建的對象執行click方法。

考慮到它是一個內部網站,少量用戶,並且所有元素都提供了id,你認為這個想法有什么不足嗎?

事件委托是一種推薦的模式,因為它有助於避免在事件處理程序附加到稍后從DOM中刪除的DOM元素時可能發生的內存泄漏。

在大多數情況下,選擇器強制JS通過DOM樹,識別所有匹配,並將事件處理函數的新實例附加到每個匹配元素,它也更快。

雖然在非常具體的ID示例中都不是這種情況,但將其用作一般方法沒有任何缺點。 在文檔的根部授權的唯一真正的缺點是在事件到達身體之前取消事件的風險,這可以防止它冒泡到你的處理程序。

事件委派並不總能使您的代碼更快。 在某些情況下,它是有利的,在某些情況下不是。

當您真正需要事件委派時以及從中受益時,您應該使用事件委派。 否則,您應該將事件處理程序直接綁定到事件發生的對象,因為這通常會更有效。

此外,您不應該在文檔級別綁定所有委派事件。 這正是.live()被棄用的原因,因為當你以這種方式綁定大量事件時,這是非常低效的。 對於委派事件處理,將它們綁定到非動態的最近父節點會更有效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM