0

当使用 Google 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");
});

当我在浏览器中单击链接时,什么也没有发生,甚至没有错误。

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

4

5 回答 5

3

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

您使用的.on()只是 的简写$(".some_class_name").click(...),要使用事件委托,您需要使用不同的语法.on()

$(document).on("click", ".some_class_name", function(event) {
    event.preventDefault();
    alert("hello");
});
于 2013-08-02T10:18:05.603 回答
0

你能添加它产生的html输出吗?

乍一看似乎没有什么不对。您可以更有效地将代码更改为:

$(".some_class_name").click(function(event) {
    event.preventDefault();
    alert("hello");
});
于 2013-08-02T10:18:11.260 回答
0

使用事件委托

$("document").on("click",".some_class_name", function(event) {
    event.preventDefault();
    alert("hello");
});
于 2013-08-02T10:18:12.623 回答
0

你试过把它包起来$(document).ready(function(){/*code here*/})吗?看看:http: //jsfiddle.net/REFh5/

于 2013-08-02T10:21:07.773 回答
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/

希望能帮助到你。

于 2013-08-02T10:22:22.690 回答