頁面加載後創建的標籤我有小的應用程序: http://jsfiddle.net/Bwdf6/4/刪除與jQuery
但隨着點擊刪除,即後頁面加載犯規刪除創建的標籤。 有什麼辦法來刪除頁面加載後創建的標籤?
在此先感謝
頁面加載後創建的標籤我有小的應用程序: http://jsfiddle.net/Bwdf6/4/刪除與jQuery
但隨着點擊刪除,即後頁面加載犯規刪除創建的標籤。 有什麼辦法來刪除頁面加載後創建的標籤?
在此先感謝
使用live()
- Working Demo。
$('.sp').live("click", function() {
$(this).parent().remove();
});
當你動態地創建元素,使用click()
是不夠的 - 只分配一個單擊處理程序存在的時候click()
被稱爲所有.sp
元素。
live()
,在另一方面,用於:
附加一個處理程序事件當前 選擇器現在和將來匹配其中,所有 元素。
因此,任何動態添加的新元素與sp
類都會將該處理程序附加到它們。
編輯:其實,一對夫婦的人指出,雖然live()
會做你需要什麼,在這種情況下使用最有效的功能將是delegate()
,這是用來:
附加一個處理程序,以一個或多個事件 爲一組特定的根元素的基礎 的 選擇現在或將來匹配,所有的元素。
我不會通過發佈代碼示例來竊取榮耀 - 請參閱@ Mark的答案,應該接受而不是我的。
+1編輯(和體育道德)。 – kapa 2011-05-13 12:06:28
您可以使用.live()
代替:
您可以使用.live()
或.delegate()
.delegate()
將是最好的選擇,因爲所有的項目都有一個共同的母公司。
$('#theList').delegate(".sp", "click", function() {
$(this).parent().remove();
});
hummm ......你不必在刪除任何行動......你想幹什麼?使用jQuery刪除添加的元素,或重新加載頁面? – 2011-05-13 11:42:02
我認爲每個人都應該停下來回答'.live()'這些類型的問題。這不是最佳做法,應該在最有可能的情況下使用'.delegate()'。我們應該在這裏建議最佳實踐,而不是狩獵代表。 – kapa 2011-05-13 11:47:01
參見@ Mark的解答比使用live()更有效。 – Town 2011-05-13 12:00:36