Javascript 动态创建的DOM操纵按钮未触发事件
我有一个添加和删除字段的函数,但是删除函数不知怎么地不起作用 HTML: 它没有通过那个条件。Javascript 动态创建的DOM操纵按钮未触发事件,javascript,jquery,html,Javascript,Jquery,Html,我有一个添加和删除字段的函数,但是删除函数不知怎么地不起作用 HTML: 它没有通过那个条件。 当我单击Remove时,它根本不做任何事情,只是滚动到顶部。您正在将单击处理程序绑定到DOM中存在的元素。但是,正在动态添加您的#removefield元素。因此,事件处理程序没有附加到它 您可以使用.on()来使用事件委派并处理将来的元素。此外,您可能希望使用类名而不是和id属性id属性需要是唯一的,但是您可以将类名设置为您想要的任意多个元素 <a href="#" class="remove
当我单击Remove时,它根本不做任何事情,只是滚动到顶部。您正在将
单击处理程序绑定到DOM中存在的元素。但是,正在动态添加您的#removefield
元素。因此,事件处理程序没有附加到它
您可以使用.on()
来使用事件委派并处理将来的元素。此外,您可能希望使用类名而不是和id
属性<代码>id
属性需要是唯一的,但是您可以将类名设置为您想要的任意多个元素
<a href="#" class="removefield">Remove</a>
“Remove”
链接不起作用的原因是,您正在逐部分添加动态
元素,从而使其成为无效标记。你应该一次把它们加在一起。比如说,
$('#addField').on('click', function () {
var part = '<div id="parts' + i + '"><span>Part</span> <input type="text" id="auto_part' + i + '" name="auto_part' + i + '" /><br/>' +
'<span>Description</span> <input type="text" id="auto_description' + i + '" name="auto_description' + i + '" /> <br />' +
'<input type="hidden" id="row_count' + i + '" name="row_count' + i + '" value="" />' +
'<a href="#" class="removefield' + i + '">Remove</a></div>';
scntDiv.after(part);
i++;
return false;
});
试试看
$('#removefield').live("click", function() {
另外,
ID
应该是唯一的,动态创建只是问题的一半。我投票支持重新打开live()
在jQuery版本1.9中被删除,在1.7中被贬值。在()上使用on
这是可行的,但是当我现在按remove时,它会删除所有的parts divs$(This).parents(“#parts”).remove()@SinanSamet,这意味着你的选择器一开始就错了。你能修复你的HTML布局吗?我不认为您在想要添加元素的地方添加了元素。在该示例中,它使用相同的名称id,只是删除了它的In而不是Inall@SinanSamet,我看不出该链接与您或我提出的问题有何关联said@SinanSamet,你需要
<a href="#" class="removefield">Remove</a>
$("#parts").on("click", ".removefield", function() {
/* ... */
});
$('#addField').on('click', function () {
var part = '<div id="parts' + i + '"><span>Part</span> <input type="text" id="auto_part' + i + '" name="auto_part' + i + '" /><br/>' +
'<span>Description</span> <input type="text" id="auto_description' + i + '" name="auto_description' + i + '" /> <br />' +
'<input type="hidden" id="row_count' + i + '" name="row_count' + i + '" value="" />' +
'<a href="#" class="removefield' + i + '">Remove</a></div>';
scntDiv.after(part);
i++;
return false;
});
$(document).on("click", ".removefield", function() {
if( i > 2 ) {
$(this).parent('div').remove();
i--;
}
return false;
});
$('#removefield').live("click", function() {