Jquery:不能删除动态创建的元素

时间:2014-10-08 11:34:03

标签: javascript jquery

我正在尝试删除动态追加的元素,但似乎没有读取为此元素附加的类函数。

我可以点击+按钮添加新元素,但点击“ - ”按钮后我无法删除。

<div id="dftenglist">
     <label for="dtfeng">Name:</label><input type="text" class="dfteng"> 
      <button id="plusdfteng">+</button> 
</div>

$("#plusdfteng").click(function() {
  $("#dftenglist").append('<br><span><label for "a">Name:</label><input type="text" class="dfteng"> <button class="minusbtn">-</button></span>'); 
});

$(".minusbtn").click(function() {
  $(this).parent().remove();
})

http://jsfiddle.net/0uv4k5bz/1/

谢谢, 亚历

1 个答案:

答案 0 :(得分:6)

尝试在此背景下使用event-delegation

$("#dftenglist").on("click", ".minusbtn", function() {
  $(this).parent().remove();
});

DEMO

您可能会问为什么?原因是,在将事件注册到该特定元素时,该元素将无法在DOM中使用,因为我们在运行时添加它。因此,在这种情况下,event-delegation将利用事件冒泡的概念来解决这个问题。有关详细信息read here

对于您的新要求,请执行以下操作,删除父元素时删除<br>

$("#dftenglist").on("click", ".minusbtn", function () {
    $(this).parent().prev('br').addBack().remove();
});

DEMO