【问题标题】:Jquery : Can't remove element dynamically created [duplicate]Jquery:无法删除动态创建的元素[重复]
【发布时间】:2014-10-08 19:53:17
【问题描述】:

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

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

<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/

谢谢, 亚历克斯

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    尝试在这种情况下使用event-delegation

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

    DEMO

    您可能会问为什么?原因是,在向特定元素注册事件时,该元素在 DOM 中将不可用,因为我们是在运行时添加它的。因此,在这种情况下,event-delegation 将利用幕后的事件冒泡概念来解决这个问题。欲了解更多信息read here

    对于您的新要求,只需执行以下操作,在删除父元素的同时删除 &lt;br&gt;

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

    DEMO

    【讨论】:

    • 这行得通,谢谢!但要完美,我怎样才能让其他物体向上移动?例如,我单击“+”3 次。因此,如果我在创建的第一个新对象上单击“-”,我希望其他元素向上移动。
    • @AlexPalombo 好的,我正在为此做一个演示,请稍等,在此之前,由于您是 Stackoverflow 的新手,我只想告诉您这里遵循的一些准则。也就是说,如果您发现为您的问题提供的任何一个答案都满足了您的需求,那么请尝试通过单击该特定答案可用的勾号来接受它。而且纯粹这不是强迫... :) :)
    • 知道了,只需在 中添加
    • @AlexPalombo 哦..这是一个不错的举动,尽管您也可以使用我的解决方案..查看更新的答案..
    猜你喜欢
    • 1970-01-01
    • 2013-02-26
    • 1970-01-01
    • 2021-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-04
    • 2011-02-18
    相关资源
    最近更新 更多