如果用户需要添加更多信息,我将使用append方法向表单添加一些输入字段和一个按钮。每个按钮都有不同的名称和id,但具有相同的类。
追加过程运行良好,但是当我想使用new按钮删除特定字段时,它就不起作用了。单击操作适用于默认存在的第一个按钮,但现在适用于在运行时添加的按钮。
rc; //is the counter which increments by one, each time.
jQuery('#mytable').append("<div id='rev-" + rc + "' class='reviewer'>" +
"<input type='text' name='reviewer_email[]' id='reviewer_email" + rc + "' value='' />" +
"<input type='button' name='rd" + rc + "' id='rd" + rc + "' class='rrd' value='Remove' /></div>");
jQuery(".rrd").click(function(){
alert("Test");
});我一直在寻找解决方案,首先我对所有按钮使用相同的id,但现在我对每个按钮使用相同的类而不是id。
有没有人能告诉我,我哪里错了。
上面的代码不是确切的代码,而是我的想法,我是如何使用它的。
谢谢。
发布于 2012-05-16 21:55:46
只能对已添加到DOM中的元素使用.click()事件处理程序。
对于动态添加的元素,您应该使用.on()
$(document).on("click", ".rrd", function(event){
// do stuff
});或者,当使用jQuery <1.7时,您应该使用.delegate()
$(document).delegate(".rrd", "click", function(event){
// do stuff
});请注意,不推荐使用.live(),也不推荐使用slower。
从jQuery文档中:
从jQuery 1.7开始,不推荐使用.live()方法。使用.on()附加事件处理程序。旧版本jQuery的用户应该优先使用.delegate()而不是.live()。
https://stackoverflow.com/questions/10619972
复制相似问题