2013-02-12 97 views
3

我在使用jQuery按下提交按钮时将h1标记添加到我的文档中。我想在稍后的时间与这个h1标签交互(用鼠标点击),所以我需要为它添加一个事件处理程序。但是,它似乎没有注册点击。事件监听器无法动态添加元素

我以前见过这个问题,他们都说使用.on(),我有,但仍然没有运气。我也没有收到任何错误,所以不知道从哪里开始。

下面是它的一个非常简化版本的jsFiddle。谢谢。

$("h1").on("click", function(){ 
    alert("test"); 
    $("h1").css("color","red"); 
}) 
+0

@dystroy是有点快,但这里的工作小提琴:HTTP://的jsfiddle。 net/fXVeW/1/ – 2013-02-12 20:39:01

+0

非常感谢 – Lars 2013-02-12 20:40:30

回答

13

使用此:

$(document.body).on("click", "h1", function(){ 
    alert("test"); 
    $("h1").css("color","red"); 
}) 

jQuery的设定必须包含,当你调用它的on,将包含h1的元素。你可以用document.body替换你确定h1的任何元素。

旁注:

你确定你不想$(this).css("color","red");,而不是$("h1").css("color","red");?使用$(this)会改变点击的h1的颜色,而不是全部改变h1

+0

这不会出现在文档中。我只是重新阅读它。它讲述了使用他的方法添加的听众的数量,但没有说这是错误的。还是我读错了。他的方法不应该仍然有效吗? – Leeish 2013-02-12 20:41:24

+0

@Leeish否:接收者(必须位于您调用的jquery集中)通过动态查找验证选择器(此处为“h1”)的元素来委派事件。 – 2013-02-12 20:44:04

+0

你确定你不想要$(this).css(“color”,“red”) - 这是一个很好的建议,谢谢。 – Lars 2013-02-12 20:49:15

-1

试试这个

JS代码

$(document.body).on("click", "h1", function(){ 
    alert("test"); 
    $(this).css("color","red"); 
}); 

LIVE DEMO