2015-06-03 80 views
2

jQuery .off() API只能刪除使用其自己的on(或bind jQuery)方法添加的事件,許多第三方插件可能使用純javascript添加事件,並且由於瀏覽器兼容性問題,是否有任何單代碼行,可以更容易地做到這一點?刪除元素上事件偵聽器的最佳方法是什麼?

+2

取決於如何添加事件太多。它也可能是整個文檔中的一個監聽器,它在接收事件時檢查匹配的選擇器。 – Nit

回答

4

如果有.addEventListener(),那麼唯一的辦法是添加一個事件處理程序來刪除它是.removeEventListener(),這意味着你需要知道的處理函數也爲了使用.removeEventListener()所以如果一個匿名函數作爲處理程序,那麼無法刪除事件監聽器。

在某些情況下,清除DOM元素的所有事件偵聽器的重負手段是用相同類型的新元素(可能在保留子元素時保留這些元素)替換它。這顯然是一個鈍器,因爲它將清除與之前的DOM元素相關的所有狀態。

+0

謝謝,用匿名函數刪除事件我覺得有點麻煩。 – Allen

1

如果通過jQuery.on()添加活動,則可以使用jQuery.off()將其刪除。

如果通過jQuery.bind()添加事件,則可以使用jQuery.unbind()將其刪除。

如果在純JavaScript中添加純.addEventListener()事件,則可以使用.removeEventListener()將其刪除。

0

如果事件是由插件添加的,所以您不會知道方法如何添加事件,因此爲了確保事件被刪除,您需要清除DOM元素並創建一個與該元素相同的新元素這是刪除...

相關問題