jQuery没有响应简单的.click()命令 - 出了什么问题?

时间:2009-11-06 20:44:37

标签: jquery forms dynamic

我正在使用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),它永远不会运行警报。

这看起来很基本,它让我肚子痛。代码有什么问题??

感谢。

3 个答案:

答案 0 :(得分:6)

如果在页面加载后动态添加了removelot链接,则需要使用live()。所以,写它是这样的:

$("a.removeslost").live("click", function() {
  ...
}):

更多信息:http://docs.jquery.com/Events/live

答案 1 :(得分:0)

这是因为您的链接是在加载页面后添加的,并且在事件“已分配”时不存在,您应该使用JQuery live events

答案 2 :(得分:0)

我不是jQuery专家,但我认为这是因为在动态添加表行之后需要重新应用事件处理程序,因为jQuery在您第一次声明事件处理程序时不知道新行。我试过写explanation of this on my blog,这可能会有所帮助。