2010-01-23 68 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(); 
});