我有一个基于jQuery的表单,您可以在其中添加额外的人员到应用程序。我正在克隆第一个字段集并将其添加到最多3个额外的人。当您添加1个额外的人时,您可以选择删除该人。
但是,我的删除按钮无效。早些时候,直到我将额外的函数添加到克隆中才能更改字段集中其他元素的ID。
我正在使用:
$(".remove").click(function() {
$(this).parent().remove();
最初工作但现在不是,我无法弄明白为什么。
我已经删除了第一个“删除此人”的行,只是为了表明第一个仍然有效,但其余的则没有。 (当它被修复时,我将把第一个放在舞台上)
可能更容易看到它,所以我把它放了here。
基本上,除了第一部分之外,为什么我的'删除此人'的任何想法都不起作用?
答案 0 :(得分:22)
尝试:
$(document).on('click', '.remove', function() {
$(this).parent().remove();
});
事件绑定在页面加载上,因此新添加的元素不是。
答案 1 :(得分:8)
'live'函数调用已被弃用,不再有效。您可以在此处找到有关如何使用替换'on()'方法重写函数的说明以及有关弃用的更多信息:
要处理所有当前和新创建的元素,您现在必须使用:
$(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", ...)
此