如果我使用jQuery的實時或委託函數來創建將插入DOM的未來元素的事件處理程序,那麼在從DOM中刪除這些元素之前我需要做任何事情,因此不會發生任何類型的內存泄漏?使用jquery live事件刪除元素會導致內存泄漏嗎?
如果這有所幫助,可能會通過jQuery的模板插件添加/刪除元素。
我還沒有找到任何有關這方面的確認,並希望確定。謝謝!
如果我使用jQuery的實時或委託函數來創建將插入DOM的未來元素的事件處理程序,那麼在從DOM中刪除這些元素之前我需要做任何事情,因此不會發生任何類型的內存泄漏?使用jquery live事件刪除元素會導致內存泄漏嗎?
如果這有所幫助,可能會通過jQuery的模板插件添加/刪除元素。
我還沒有找到任何有關這方面的確認,並希望確定。謝謝!
號考慮方式live()
works:
處理程序傳遞給
.live()
從未綁定到一個元素;相反,.live()
將特殊處理程序綁定到DOM樹的根。
有附加到DOM所有live()
處理–一個single event handler function不管你通過live()
或有多少元素單一處理器可以設想匹配多少處理器連接。
該函數負責確定是否已經冒出DOM的事件源自匹配先前通過調用live()
註冊的選擇器的元素。
由於沒有事件處理程序實際附加到與提供給live()
的選擇器相匹配的DOM元素,所以如果刪除了這些元素,則不會有內存泄漏。
請記住,當您使用jQuery刪除元素時,jQuery處理綁定事件處理程序的必要清理。如果你通過在容器上設置innerHTML
來炸掉元素,唯一的辦法就是泄漏。
雖然我無法完全確認,但如果這導致內存泄漏,我會非常驚訝。
我認爲Live的工作方式是它附加到文檔,然後掃描文檔以查找事件匹配。
很確定它不會將事件附加到在運行時以$(".element").click
的方式創建的元素上。