2009-08-08 269 views
0

我有一個超鏈接與ID單擊時將使用JQuery執行某個事件。 JQuery在文檔加載中記錄這個鏈接的存在。用戶訪問過程中的一段時間。我刪除該鏈接並稍後重新添加。但是,即使在刪除並添加鏈接後單擊該鏈接時,該鏈接也不會再次被觸發。再次添加,刪除和添加元素刪除其事件

爲什麼是這種情況,我該如何補救?有關事件綁定的事情?或者我應該只添加一個onclick屬性?

回答

3

你使用這樣的標籤添加單擊事件被將事件綁定到當時選定的元素。

刪除鏈接並重新添加鏈接將有效地創建一個新元素,而不會發生此事件。

$('#speciallink').live("click",function(){ 
    // do something 
    return false; 
}); 
+0

+1,使其對所提到的現場活動 – 2009-08-08 20:10:10

+0

第一人:您可以使用「活」的方法來添加將應用於符合此規則的事件規則,創建這些元素,即使創建規則後謝謝!我只是繼續學習。 :) – Abs 2009-08-12 09:43:24

1

不要從DOM樹中刪除鏈接。相反,只需使用show()和hide()切換其可見性即可。

使用remove()從DOM樹中刪除元素將刪除該元素及其所有事件處理程序,即使您將其添加回相同的id也是如此。

1

您需要將該事件處理程序綁定到添加的新元素,或者您可以使用live()而不是綁定來實現所需。

基本上,事件處理程序引用原始元素。當該元素被刪除時,即使新元素添加了相同的ID,它也是一個不同的元素。

0

如果完全刪除元素,則在重新創建元素時,需要將任何事件偵聽器重新附加到該元素。

或者,只是隱藏通過設置它的樣式顯示元素:

$('#speciallink').click(function(){ 
    // do something 
    return false; 
}); 

這將:沒有與.show().hide()