remove()仅处理第一个div而不是静止动态添加的字段

时间:2016-05-19 10:03:36

标签: javascript jquery

我正在尝试删除HTML字段,但删除不适用于动态添加的字段。

 $('.delete-ques').on('click', function() { 
            alert('hello');
            $(this).parent().remove(); 
            return false;
            });

https://jsfiddle.net/gp2gwana/3/

尝试添加div并删除

5 个答案:

答案 0 :(得分:3)

您需要事件委派才能将事件附加到动态添加的元素:

$('#clone-ques').on('click','.delete-ques', function() { 
        alert('hello');
        $(this).parent().remove(); 
        return false;
});

<强> Working Demo

答案 1 :(得分:2)

这样做

$('body').on('click', '.delete-ques', function() {
    // do something
});

你会找到一些好的例子

herehere

答案 2 :(得分:1)

在动态添加的元素上使用document.on click事件进行删除:

.on 用于与您的选择器匹配的所有元素的单个处理程序,包括动态创建的元素。

演示:https://jsfiddle.net/7s05cdoy/

$(document).on('click','.delete-ques',function() {
      $(this).closest('.parent-question').remove();  // using closest you can get parent of this link
      return false;
    });

答案 3 :(得分:0)

您可以使用$(doument)

$(document).on('click','.delete-ques', function() { 
            alert('hello');
            $(this).parent().remove(); 
            return false;
 });

您的工作代码https://jsfiddle.net/gp2gwana/5/

答案 4 :(得分:0)

代码中的一切都很完美。除了以下行

$('#select-question'+i).selectize({create: true});

通过评论以上代码行来尝试现有代码。

我在控制台中看到错误

Uncaught TypeError: $(...).selectize is not a function

修改

中返回false之前,你应该在代码行之下
$('.delete-ques').on('click', function() { 
        $(this).parent().remove(); 
        return false;
});

尝试更新jsfiddle