我正在使用jQuery动态地将表单元素添加到Web表单中。用户可以通过单击按钮/链接在其请求表单中“添加时间段”。单击时,我使用.after()将另外两行添加到表单表格,以及标签和字段。
附加代码中的最后一列是一个显示“删除”的链接。
$(document).ready(function() {
var i=2;
$("#add_time_slot").click(function() {
$("#time_slot_table tr:last").after('<tr"><td ... etc ... </tr><tr> ... etc ...<td><a class="removeslot" href="#">Remove</a></td></tr>');
i++;
return false;
});
});
那里有很多HTML代码,因此我将常规内容拉出来以保持其清洁。 ......等等......没什么太奇怪的。
到目前为止,这么好。它很棒。但后来我编写这段代码作为点击“删除”链接时我将使用的开头:
$("a.removeslot").click(function() {
alert("It worked!");
return false;
});
它无效。如果相反,我在同一代码中添加$("#header a")
之类的内容,代替$("a.removeslot")
,它可以正常工作,当我点击标题中的任何链接时,它返回false并运行警报。但是当它是a.removeslot时,它总是转到“#”URL(不返回false),它永远不会运行警报。
这看起来很基本,它让我肚子痛。代码有什么问题??
感谢。
答案 0 :(得分:6)
如果在页面加载后动态添加了removelot链接,则需要使用live()
。所以,写它是这样的:
$("a.removeslost").live("click", function() {
...
}):
答案 1 :(得分:0)
这是因为您的链接是在加载页面后添加的,并且在事件“已分配”时不存在,您应该使用JQuery live events。
答案 2 :(得分:0)
我不是jQuery专家,但我认为这是因为在动态添加表行之后需要重新应用事件处理程序,因为jQuery在您第一次声明事件处理程序时不知道新行。我试过写explanation of this on my blog,这可能会有所帮助。