2012-08-07 58 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'}) 
});