Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.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 删除AJAX添加的HTML_Javascript_Jquery_Ajax - Fatal编程技术网

Javascript 删除AJAX添加的HTML

Javascript 删除AJAX添加的HTML,javascript,jquery,ajax,Javascript,Jquery,Ajax,我有一个建立订单的页面。该页面完全使用ajax查找产品并将其添加到页面中 现在,如果您添加了一个项目并需要删除它,我正在构建这样做的功能: $('.orderRemove').click(function() { var removeID = $(this).attr("id"); $("#item-" + removeID).remove(); calculateTotal(); }); 但是由于.orderRemove是由AJAX添加的,所以它不起作用 如何让这个调

我有一个建立订单的页面。该页面完全使用ajax查找产品并将其添加到页面中

现在,如果您添加了一个项目并需要删除它,我正在构建这样做的功能:

$('.orderRemove').click(function() {
    var removeID = $(this).attr("id");
    $("#item-" + removeID).remove();
    calculateTotal();
});
但是由于.orderRemove是由AJAX添加的,所以它不起作用

如何让这个调用准确地工作,删除ajax添加的完整块


谢谢

您必须像这样在上使用

$(document).on('click','.orderRemove',function() {
   var removeID = $(this).attr("id");
   $("#item-" + removeID).remove();
  calculateTotal();
});

您必须像这样在
上使用

$(document).on('click','.orderRemove',function() {
   var removeID = $(this).attr("id");
   $("#item-" + removeID).remove();
  calculateTotal();
});

原因是动态添加到DOM中的HTML不会将自身附加到事件处理程序,因此,如果您使用的是小于
1.7
的jQuery版本,或者如果您使用的是jQuery 1.7或更高版本,请在ajax成功回调中重新附加事件处理程序,或者重试

$(document).delegate('.orderRemove','click',function() {
    var removeID = $(this).attr("id");
    $("#item-" + removeID).remove();
    calculateTotal();
});
以.on为例

$(document).on('click','.orderRemove',function() {
   var removeID = $(this).attr("id");
   $("#item-" + removeID).remove();
  calculateTotal();
});

原因是动态添加到DOM中的HTML不会将自身附加到事件处理程序,因此,如果您使用的是小于
1.7
的jQuery版本,或者如果您使用的是jQuery 1.7或更高版本,请在ajax成功回调中重新附加事件处理程序,或者重试

$(document).delegate('.orderRemove','click',function() {
    var removeID = $(this).attr("id");
    $("#item-" + removeID).remove();
    calculateTotal();
});
以.on为例

$(document).on('click','.orderRemove',function() {
   var removeID = $(this).attr("id");
   $("#item-" + removeID).remove();
  calculateTotal();
});

尝试
$('.orderRemove')。在(“click”,function()
代替也不起作用的。然后尝试
$(“body”)。在(“click”,“.orderRemove”,function(){
尝试
$('.orderRemove')。在(“click”,function()
代替也不起作用的。然后尝试
$(“body”)。在(“click”,“.orderRemove”,function()){
这是到目前为止唯一有效的答案,非常感谢!绑定到一个比整个文档更具体的元素要高效得多,因为该绑定将处理任何地方的所有单击;通常,OP希望绑定到通过AJAX填充内容的实际元素。@mplungjan sry我不知道。on也被弃用了…所以他们现在使用的是它的委托吗?我在一段时间后回到jQuery,所以…
.on()
不被弃用,
.delegate()
被弃用了,取而代之的是
.on()
@lanzz哦……好吧,我已经给出了这两个例子,因为在1.7版之前,on都不可用。这是迄今为止唯一有效的答案,非常感谢!绑定到一个比整个文档更具体的元素要有效得多,因为绑定将处理任何地方的所有单击;通常,OP希望绑定到实际的元素元素,其内容通过AJAX填充。@mplungjan sry我不知道。on也被弃用了…所以他们现在使用的是它的委托?我在一段时间后回到jQuery,所以…
.on()
不被弃用,
.delegate()
被弃用,取而代之的是
.on()
@lanzz哦……好的,我已经给出了这两个示例,因为在1.7版之前,z.on不可用