.parent()。remove()问题

时间:2011-05-15 18:13:40

标签: jquery forms clone

我有一个基于jQuery的表单,您可以在其中添加额外的人员到应用程序。我正在克隆第一个字段集并将其添加到最多3个额外的人。当您添加1个额外的人时,您可以选择删除该人。

但是,我的删除按钮无效。早些时候,直到我将额外的函数添加到克隆中才能更改字段集中其他元素的ID。

我正在使用:

$(".remove").click(function() {
    $(this).parent().remove();

最初工作但现在不是,我无法弄明白为什么。

我已经删除了第一个“删除此人”的行,只是为了表明第一个仍然有效,但其余的则没有。 (当它被修复时,我将把第一个放在舞台上)

可能更容易看到它,所以我把它放了here

基本上,除了第一部分之外,为什么我的'删除此人'的任何想法都不起作用?

5 个答案:

答案 0 :(得分:22)

尝试:

$(document).on('click', '.remove', function() {
    $(this).parent().remove();
});

事件绑定在页面加载上,因此新添加的元素不是。

答案 1 :(得分:8)

'live'函数调用已被弃用,不再有效。您可以在此处找到有关如何使用替换'on()'方法重写函数的说明以及有关弃用的更多信息:

http://api.jquery.com/live/

要处理所有当前和新创建的元素,您现在必须使用:

$(document).on("click", ".remove", function() {
    $(this).parent().remove();
});

jQuery在文档对象上运行,而不是在元素上运行,并且还有一个额外的参数来指定要监视的元素并添加事件侦听器。

答案 2 :(得分:5)

确保关闭你的表达:

$(".remove").click(function() {
    $(this).parent().remove();
});

答案 3 :(得分:1)

您可以执行此操作以删除父级:

 $(document).on("click", ".remove", function() { 
      $(this).parent().remove(); 
 });

或者您可以删除所有父母:

 $(document).on("click", ".remove", function() { 
      $(this).parents().remove();
 });

答案 4 :(得分:0)

元素最初不存在,这意味着您需要使用.live().delegate()

例如,更改:

使用$(".remove").click(...)代替$(".remove").live("click", ...)