2011-11-26 42 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否则你不会看到鼠标悬停的结果。