2010-07-26 62 views
2

我最近将我的代码转换为动态生成的结果。下面的代码工作正常,切换control_hover类。jQuery .live()问题

前面的代码

$(".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");}); 

我明明做的事情不正确。任何帮助,将不胜感激。

回答

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"); 
}); 
+0

谢谢你,现在是有道理的。只要堆栈让我接受答案。 – st4ck0v3rfl0w 2010-07-26 21:57:54

+0

@ st4ck0v3rfl0w - 不客气。 :o)而且仅供参考,您需要jQuery 1.4.1或更高版本以'.live()'使用'hover'。 – user113716 2010-07-26 21:58:34

4

现场只能接受一个处理程序。尝试:

$(".control").live('mouseenter', enterhandler).live('mouseleave',leavehandler); 

http://api.jquery.com/live/见警告部分