JQuery .remove()不适用于动态添加元素

时间:2015-06-05 13:09:27

标签: javascript jquery

我在从页面中删除元素时遇到问题 当我点击页面上的按钮时,它会添加div,如下所示:

<div class="holder-div" style="position: relative;display: inline-block;">              
            ...
            <i class="RemoveMeAndParent"></i>           
            </div>

当我点击RemoMeAndParent时,我想删除我添加的内容:

$('body').on('click', '.RemoveMeAndParent', function () {
                $(this).closest('div').remove();

但这并没有删除holder-div没有错误,没有任何错误 只是为了测试,我打电话给.empty()并且它有效 那么为什么不能删除这个div呢?

这是我将其添加到页面的方式:

var $this = $(this);
var newElement = $('<div class="holder-div" style="position: rel...');
newElement.prependTo($this);

2 个答案:

答案 0 :(得分:-2)

将remove函数包装在另一个函数中,并在添加动态元素时调用该函数。

该函数可能包含在准备好的文档中,等待dom完成加载,因此它具有所有元素。如果你添加一个元素之后javascript没有注册它或什么。因此,如果您将该函数包装在另一个函数中并在您添加了动态元素之后调用它,它应该可以工作。

答案 1 :(得分:-2)

请检查这个小提琴以获得答案:

http://jsfiddle.net/cq3vd0yx/6/

问题不在于无法删除元素,而是动态绑定动态失败。对于使用jQuery的动态事件绑定,请使用以下语法:

$(document).on( eventName, selector, function(){} );