2012-08-07 60 views
0

我有这样的代码的jQuery添加新的元素

$.getJSON('check.php', function(data) { 
    $.each(data, function(key, val) { 
     $("#badge").append("<tr><td>"+val+"</td></tr><tr><td>-------------------------------------------------------</td></tr>"); 
    }); 
}); 

$("td").mouseover(function() { 
    $(this).css("color","red"); 
}); 

我的问题是,当我将鼠标悬停我的鼠标我所期待的,他们也不会改变颜色的每个元素......在有人可以解释我为什么???并帮助我如何做正确的事情。

+4

也许尝试删除'\'' – andlrc 2012-08-07 09:49:41

+0

你是什么意思? – 2012-08-07 09:58:16

+0

在第5行''));''你有一个''''但是看@manseUK的答案 – andlrc 2012-08-07 09:59:09

回答

6

事件mouseover将不火的元素不存在负载页面上...所以你需要这样做:

$("#badge").on('mouseover','td', function() { 
    $(this).css("color","red"); 
}); 

on()功能将在badge元素被触发(这是一个桌子即时猜测),并且只会在事件目标为td且事件为mouseover时触发。

但有一件事要注意 - 这可以很容易地用CSS做:

#badge td:hover { 
    color: red; 
} 

感谢@WTK:

请记住,这on()可启动的jQuery 1.7。对于旧版本的jQuery和类似的结果,请使用bind(),delegate()live()

+0

请记住,on()可用于jQuery 1.7。对于老版本的jQuery和类似的结果,可以使用'bind()','delegate()'或'live()'。 http://api.jquery.com/on/ – WTK 2012-08-07 09:57:37

+0

尝试过...但不工作先生... – 2012-08-07 09:58:33

+0

@JulianPaoloDayag *它不工作* ..错误?什么?事件是否被触发? – ManseUK 2012-08-07 09:59:15

1

请尝试使用liveon,因为您的元素是动态加载的。基本上,这些功能所做的就是让您将事件处理程序附加到未来的元素。像这样使用它:

$("td").on('mouseover', function(){ 
    $(this).css({'color':'#F00'}) 
});