當你刪除()一個元素並在其他地方追加()時,jQuery會發生什麼?當你移除()一個元素並在其他地方追加()時,事件是否會在jQuery中丟失?
看起來這些事件已被解除掛鉤 - 就好像您只是插入了新的html(我猜是發生了什麼)。但它也有可能我的代碼有一個錯誤 - 所以我只想在我繼續之前驗證這種行爲。
如果是這種情況 - 是否有任何簡單的方法可以將事件重新連接到HTML的那一部分,或者移動元素而不會丟失事件的其他方法。
當你刪除()一個元素並在其他地方追加()時,jQuery會發生什麼?當你移除()一個元素並在其他地方追加()時,事件是否會在jQuery中丟失?
看起來這些事件已被解除掛鉤 - 就好像您只是插入了新的html(我猜是發生了什麼)。但它也有可能我的代碼有一個錯誤 - 所以我只想在我繼續之前驗證這種行爲。
如果是這種情況 - 是否有任何簡單的方法可以將事件重新連接到HTML的那一部分,或者移動元素而不會丟失事件的其他方法。
是的,jQuery與remove()
的方法是解除與jQuery自己的bind
綁定的所有內容(以防止內存泄漏)。
但是,如果您只是想在DOM中移動某些內容,則不必首先使用remove()
。只是append
你的心臟的內容,事件綁定將堅持圍繞:)
例如,粘貼到您的螢火蟲在此頁:
$('li.wmd-button:eq(2)').click(function(){ alert('still here!') }).appendTo(document.body)
現在向下滾動到該頁面的底部並點擊現在埋在SO頁腳下的小globy圖標。您將獲得alert
。所有,因爲我首先注意不到remove
。
使用jQuery1.3.1生活()綁定的事件,你將不必擔心這個..
更新:現場活動現在已被棄用,但你可以從$同樣的效果(文件) 。上()。
jQuery的分離()函數是一樣刪除()但保留了事件處理程序中,它返回該對象。如果您必須移除物品並將其放置在其他地方,則可以使用該物品。
var objectWithEvents = $('#old').detach();
$('#new').append(objectWithEvents);
檢查API文檔在這裏:http://api.jquery.com/detach/
所以是我原來的問題?究竟發生了什麼。我現在要檢查'現場' – 2009-02-17 23:20:24
絕對有益於瞭解現場 - 但要小心這裏的警告http://docs.jquery.com/Events/live#typefn – 2009-02-17 23:39:57
不適用如果您正在使用特定的dom對象而不是選擇器。這也是我的第一個想法。 – 2013-03-28 19:37:03