我最近转换了代码以生成动态生成的结果。下面的代码可以很好地切换control_hover类。
以前的代码
$(".control").hover(function () {$(this).addClass("control_hover");},function () {$(this).removeClass("control_hover");});
但是,现在使用实时代码,它似乎不执行removeClass部分。
新代码
$(".control").live('hover',function () {$(this).addClass("control_hover");},function () {$(this).removeClass("control_hover");});
我显然做错了什么。任何帮助将不胜感激。
答案 0 :(得分:4)
Live只能接受一个处理程序。尝试:
$(".control").live('mouseenter', enterhandler).live('mouseleave',leavehandler);
http://api.jquery.com/live/请参阅警告部分
答案 1 :(得分:3)
将.live()
与hover
一起使用时,不需要2个功能。您需要发送一个函数来测试触发的事件。
试一试: http://jsfiddle.net/RpV6y/
$(".control").live('hover',function (evt) {
if(evt.type == 'mouseover') {
$(this).addClass("control_hover");
} else {
$(this).removeClass("control_hover");
}
});
另一种选择是使用toggleClass
。它仍将为两个事件开火。
试一试: http://jsfiddle.net/RpV6y/1/
$(".control").live('hover',function (evt) {
$(this).toggleClass("control_hover");
});