Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/418.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用jQuery删除HTML中的动态元素_Javascript_Jquery_Html - Fatal编程技术网

Javascript 如何使用jQuery删除HTML中的动态元素

Javascript 如何使用jQuery删除HTML中的动态元素,javascript,jquery,html,Javascript,Jquery,Html,我有一个HTML代码,可以使用按钮单击添加几个元素,并分别删除每个元素。问题是删除功能不起作用。我需要删除选定的元素。如何做到这一点 //添加项 $(“按钮”)。在(“单击”,函数(){ $(“.main”).append($(“.sub:last”).clone().html()); $(“span:last”)。在(“删除”)之后; }); //删除项目 $(“.removeDiv”)。在(“单击”,函数(){ $(this).最近的(“.inner”).remove(); }); .in

我有一个HTML代码,可以使用按钮单击添加几个元素,并分别删除每个元素。问题是删除功能不起作用。我需要删除选定的元素。如何做到这一点

//添加项
$(“按钮”)。在(“单击”,函数(){
$(“.main”).append($(“.sub:last”).clone().html());
$(“span:last”)。在(“删除”)之后;
});
//删除项目
$(“.removeDiv”)。在(“单击”,函数(){
$(this).最近的(“.inner”).remove();
});
.inner{
边缘底部:20px;
}
removeDiv先生{
左边距:10px;
}

新内容

添加新的
您的问题不是
$(this).最近的(“.inner”)。删除()
该部分是正确的。问题在于事件侦听器,您必须使用事件委派:

//添加项
$(“按钮”)。在(“单击”,函数(){
$(“.main”).append($(“.sub:last”).clone().html());
$(“span:last”)。在(“删除”)之后;
});
//删除项目
$(document).on(“click”,“.removeDiv”,function()){
$(this).最近的(“.inner”).remove();
});
.inner{
边缘底部:20px;
}
removeDiv先生{
左边距:10px;
}

新内容

添加新的
您的问题不是
$(this).最近的(“.inner”)。删除()
该部分是正确的。问题在于事件侦听器,您必须使用事件委派:

//添加项
$(“按钮”)。在(“单击”,函数(){
$(“.main”).append($(“.sub:last”).clone().html());
$(“span:last”)。在(“删除”)之后;
});
//删除项目
$(document).on(“click”,“.removeDiv”,function()){
$(this).最近的(“.inner”).remove();
});
.inner{
边缘底部:20px;
}
removeDiv先生{
左边距:10px;
}

新内容
添加新的
//添加项
$(“按钮”)。在(“单击”,函数(){
$(“.main”).append($(“.sub:last”).clone().html());
$(“span:last”)。在(“删除”)之后;
});
//删除项目
$('body').delegate('removeDiv','click',function(){
$(this).最近的(“.inner”).remove();
})
.inner{
边缘底部:20px;
}
removeDiv先生{
左边距:10px;
}

新内容
添加新的
//添加项
$(“按钮”)。在(“单击”,函数(){
$(“.main”).append($(“.sub:last”).clone().html());
$(“span:last”)。在(“删除”)之后;
});
//删除项目
$('body').delegate('removeDiv','click',function(){
$(this).最近的(“.inner”).remove();
})
.inner{
边缘底部:20px;
}
removeDiv先生{
左边距:10px;
}

新内容

添加新的
委派
从3.0版开始就不推荐使用,从1.7版开始就不应该使用。@t.niese顺便说一句,这个问题需要另一种方法来删除该元素。当然,您可以使用事件委派,但我认为在创建事件时直接将其附加到按钮会更好。@Victor为什么直接将其附加到按钮会更好?这是事件委派的用例。在大多数情况下,将事件侦听器直接附加到按钮会创建一个耦合性更强、可维护性较差的代码,然后委托。@t.niese至少是因为用户不会在每次打开页面时单击“添加新”按钮。那么,为什么要徒劳地附加事件呢?@Victor与用户不点击添加新代码的情况相比,您在可维护性方面的缺点要大得多。如果您真的关心这个问题,那么在第一次单击
添加新的
时,使用
一次
侦听器添加删除的代理侦听器,但是您还需要添加一个检查,检查列表是否已预填充,或者是否通过刷新更新。。。因此,它同样更容易出错。您应该将委派事件侦听器连接到尽可能靠近元素的位置(在
.main
上),然后从一开始就使用该侦听器实际上没有任何退步。
delegate
从3.0版开始就不推荐使用,并且从1.7版开始就不应该使用。@t.niese,这个问题值得用另一种方式来消除这一因素。当然,您可以使用事件委派,但我认为在创建事件时直接将其附加到按钮会更好。@Victor为什么直接将其附加到按钮会更好?这是事件委派的用例。在大多数情况下,将事件侦听器直接附加到按钮会创建一个耦合性更强、可维护性较差的代码,然后委托。@t.niese至少是因为用户不会在每次打开页面时单击“添加新”按钮。那么,为什么要徒劳地附加事件呢?@Victor与用户不点击添加新代码的情况相比,您在可维护性方面的缺点要大得多。如果您真的关心这个问题,那么在第一次单击
添加新的
时,使用
一次
侦听器添加删除的代理侦听器,但是您还需要添加一个检查,检查列表是否已预填充,或者是否通过刷新更新。。。因此,它同样更容易出错。您应该将委派事件侦听器连接到尽可能靠近元素的位置(在
.main
上),然后从一开始就使用该侦听器就不会有任何后退。