2010-01-23 43 views
9

即時通訊嘗試使用jquery爲了使按鈕刪除其父div。jquery刪除父母不工作動態創建的div

我的標記:

<div class="web_store_fields" id="web_store_input1"> 
<p> 
<label for="web_store_address[]" >Store Address : </label>   
<input name="web_store_address[]" class="web_store_info" type="text" value="http://www." size="35"/> 
<input class="button_remove_web_store" type="button" value="Remove" /> 
</div> 

的jQuery DIV移除代碼:

$('.button_remove_web_store').click(function() { 
$(this).parents("div:first").remove(); 
}); 

這個工程確定了這是在HTML div時加載頁面而不是由用戶動態創建 格(使用這個jquery代碼):

$('#button_add_web_store').click(function() { 
var num = $('.web_store_fields').length; 
var newNum = new Number(num + 1);  
var newElem = $('#web_store_input' + num).clone().attr('id', 'web_store_input' + newNum); 
$('#web_store_input' + num).after(newElem); 
}); 

只是要清楚,動態創建工作正常,問題是刪除這些div。

任何提示將高度讚賞

回答

17

使用委派處理程序(on)與類的選擇,使得獲得更高添加任何新的按鈕仍然有效。

$('body').on('click', '.button_remove_web_store', function() { 
    $(this).parents("div:first").remove(); 
}); 
+0

非常感謝你,它的工作! 我是一個jquery新手,顯然有很多我不知道。 – samoyed 2010-01-24 06:48:17

+0

「live」在jQuery 1.7中已被棄用,並在jQuery 1.9中被移除 - 它不應該再被使用。 – 2013-06-11 13:45:51

+0

@DaveMarkle - 謝謝你的提升。我已更新。 – tvanfosson 2013-06-11 14:19:14

2

不要使用live處理程序 - 它在jQuery的1.7被棄用,在jQuery的1.9刪除- 對很多人有重大更改。

相反,使用on處理程序,它是推薦的方式,現在:

$(document).on('click', '.button_remove_web_store', function() { 
    $(this).parents("div:first").remove(); 
}); 
+0

這應該轉換爲正確的答案 – damoiser 2013-06-10 14:56:01

0

我最近也陷入了一個問題與$.on()說不清楚,與此非常相似的應用程序,因爲大多數「刪除此的父」功能是。

爲了這個問題的例子說明:

$('.web_store_fields').on('click', '.button_remove_web_store', function(e){ 
    $(this).parent().remove(); 
}); 

的大收穫這裏是第二個參數。您必須選擇容器$('.container')並將「按鈕」的元素選擇器作爲第二個參數傳遞給.on函數。所以定義(各種)

$('.container').on('click', '.myremovebutton', function(e){ 
    $(this).parent().remove(); 
});