2013-08-02 59 views
0

我有这似乎与谷歌Chrome浏览器的Web开发工具查看时产生正确的HTML如下:试图捕捉的锚标记上的点击事件

$("<a />", { 
    text: "link text goes here" 
}).attr({ 
    href: "#", 
    class: "some_class_name", 
    id: "divSlot-" + data.id 
}).appendTo("#divSlots"); 

我试图点击事件添加到标签:

$(".some_class_name").on("click", function(event) { 
    event.preventDefault(); 
    alert("hello"); 
}); 

当我点击浏览器中的链接时,没有任何反应,甚至没有发生错误。

我做错了什么或错过了什么?

回答

3

您需要使用基于事件委托的事件注册,因为您正在处理动态添加的元素。

.on(),您使用的是仅适用于$(".some_class_name").click(...)手短,尽量使用你需要使用的.on()

$(document).on("click", ".some_class_name", function(event) { 
    event.preventDefault(); 
    alert("hello"); 
}); 
+0

这是问题所在,谢谢。 – oshirowanen

0

不同的语法,你可以添加它产生的HTML输出事件代表团?

起初看起来没有什么看起来不对。你可以更有效地改变你的代码:

$(".some_class_name").click(function(event) { 
    event.preventDefault(); 
    alert("hello"); 
}); 
0

使用事件代表团

$("document").on("click",".some_class_name", function(event) { 
    event.preventDefault(); 
    alert("hello"); 
}); 
0

试试以下(我只是改变data.id和正常工作)

$("<a />", { 
    text: "link text goes here" 
}).attr({ 
    href: "#", 
    class: "some_class_name", 
    id: "divSlot-21" 
}).appendTo("#divSlots"); 

$(".some_class_name").on("click", function(event) { 
    event.preventDefault(); 
    alert("hello"); 
}); 

工作示例这里:http://jsfiddle.net/SF6pN/

希望它帮助。