我有一些事件綁定的元素。在刪除這些元素之前,我需要先解除它們嗎?如果我不會導致問題?jquery unbinding是否有必要? (替換元素)
謝謝。
編輯:我意識到我錯誤地解釋了這個問題,所以現在我正在編輯,請原諒我,但我認爲這樣做比做出一個新問題更有意義。
如果我替換它,我將不得不使用解除綁定或刪除元素,對吧?在jQuery中使用js replacewith方法或html方法。
我有一些事件綁定的元素。在刪除這些元素之前,我需要先解除它們嗎?如果我不會導致問題?jquery unbinding是否有必要? (替換元素)
謝謝。
編輯:我意識到我錯誤地解釋了這個問題,所以現在我正在編輯,請原諒我,但我認爲這樣做比做出一個新問題更有意義。
如果我替換它,我將不得不使用解除綁定或刪除元素,對吧?在jQuery中使用js replacewith方法或html方法。
不,你不需要那樣做(事件解除綁定是在刪除時自動完成的)。
不,不會造成任何問題(除非有人有不愉快的經歷,他們想分享:)我的錢是'重要的不是!'。
我能想到的唯一例外是,如果你正在做任何活動事件綁定,在你不希望新插入的元素獲得先前從DOM中刪除的元素的相同事件處理程序的情況下。然後,在從DOM中刪除之前解除綁定任何(實時)事件處理程序是一個好主意,也就是說,可以在任何階段執行此操作,而不必在刪除之前執行此操作。
如果您不再需要頁面上某個事件的事件處理程序,則需要明確解除綁定的唯一時間。
從DOM中刪除元素會導致該元素的事件和數據也被刪除。這裏是相關的源代碼
remove: function(selector) {
if (!selector || jQuery.filter(selector, [ this ]).length) {
// Prevent memory leaks
jQuery("*", this).add([this]).each(function(){
jQuery.event.remove(this);
jQuery.removeData(this);
});
if (this.parentNode)
this.parentNode.removeChild(this);
}
}
如果使用jQuery('div').html('')清除div,該怎麼辦?並且該div內的內容有點擊或綁定事件。它是否自動解除綁定。 – kr1zmo
@ kr1zmo這就是我正在尋找的... – rtpHarry
'.html(htmlString)'[也會解除綁定它的事件](http://api.jquery.com/html/#html2)「另外,jQuery在將這些元素替換爲新內容之前,從子元素中刪除其他構造,如數據和事件處理程序。「 – rtpHarry