2011-11-26 57 views
3

我有一個頁面,在運行時我添加一些控制根據情況。不會處理像jQuery現場活動

我寫這篇文章的代碼mouseover事件TDs在我的表:

$(".TableEntry .EntryCell").live("mouseover", function() { 
var parent = $(this).parent(); 
parent.css("background-color", "C4F7C3"); 
}); 

,並根據jQuery的文檔工作fine.but:

的.live()方法已過時。使用.on()附加事件處理程序。老版本的jQuery用戶應優先使用.delegate(),而不要使用.live()。

我用ondelegate這樣的代碼,但它不工作:

$(".TableEntry .EntryCell").on("mouseover", function() { 
var parent = $(this).parent(); 
parent.css("background-color", "C4F7C3"); 
}); 

我怎麼可以添加事件處理程序使用動態ondelegate

+0

似乎正在使用'on',你正在使用哪個版本的'jQuery'? –

+0

jQuery版本1.7.1 – Arian

回答

6

您有一個名爲變量無效par應該parent ..

你需要找到你將綁定的事件處理程序,以一個持久的父..

模擬.live,你將需要添加它的$('body')所以

$("body").on("mouseover", '.TableEntry .EntryCell', function() { 
    var parent = $(this).parent(); 
    parent.css("background-color", "C4F7C3"); 
}); 

要使用它作爲delegate你需要找到一個共同的堅持家長和綁定到它..

$("_persisted_parent_id_tag_etc_").on("mouseover", '.TableEntry .EntryCell', function() { 
    var parent = $(this).parent(); 
    parent.css("background-color", "C4F7C3"); 
}); 

所以你綁定到該元素在$('...')和處理程序適用於你傳遞的第二個參數的選擇(如果你通過一個

1

我認爲你需要把一個#在你的顏色值前面是這樣的:#C4F7C3否則你不會看到鼠標懸停的結果。