.parent().remove() 问题

Posted

技术标签:

【中文标题】.parent().remove() 问题【英文标题】:.parent().remove() issue 【发布时间】:2011-08-25 23:58:54 【问题描述】:

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

但是,我的删除按钮不起作用。之前是这样,直到我在克隆中添加了额外的函数来更改字段集中其他元素的 ID。

我正在使用:

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

原来可以,但现在不行,我不知道为什么。

我删除了阻止第一个“删除此人”的行,只是为了表明第一个仍然有效,但其余的无效。 (当它修复后,我最终会将第一个放置在舞台外)

可能更容易看到所以我把它贴在here。

所以本质上,任何想法为什么我的“删除此人”除了第一部分之外没有处理所有问题?

【问题讨论】:

【参考方案1】:

元素原本不存在,也就是说你需要使用.live()或者.delegate()

例如,改变:

使用$(".remove").click(...) 而不是$(".remove").live("click", ...) 这个

【讨论】:

【参考方案2】:

您可以这样做来删除父级:

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

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

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

【讨论】:

【参考方案3】:

试试:

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

事件在页面加载时绑定,因此新添加的元素没有。

【讨论】:

这很可能会起作用,如果是这样,原因是当您执行 $.click() 时,您会将事件处理程序连接到与选择器匹配的所有 当前存在的元素,而$.live() 将它连接到所有 当前或未来 匹配元素。如果在代码连接事件处理程序运行后添加新人块,则在处理程序连接时它们不存在,因此不包含在选择器中当事情发生时 . @Tomas:实际上.live() 没有连接到任何匹配选择器的元素。它为windowdocument(我不记得是哪一个)提供了一个处理程序,并使用文档范围的事件委托。出于这个原因,我更喜欢使用.delegate(),它也使用委托,但仅限于您定义的容器内。 @patrick:你是对的。性能方面最好使用委托。虽然委托也在内部使用 live(带有额外参数)。 是的,你是对的。因为他们在做同样的事情,jQuery 将所有功能整合到一个方法中。我认为如果他们只指定一种公共委托方法会更好。【参考方案4】:

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

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

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

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

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

【讨论】:

【参考方案5】:

确保关闭你的表达式:

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

【讨论】:

太棒了!非常感谢你!真的很感激!我使用了$(".remove").live("click",function() $(this).parent().remove(); reset(); ); ,它成功了!再次感谢!太棒了!

以上是关于.parent().remove() 问题的主要内容,如果未能解决你的问题,请参考以下文章

JPA Merge 和 Remove 不会同时级联到子对象

jQuery 利用 parent() parents() 寻找父级 或祖宗元素

jquery 删除表格当前行

Jquery - 获取所有子节点 ( 并删除 )

无法使用休眠 OGM 从 mongoDB 中删除元素

javascript怎么获得特定的祖先元素