jQuery .live()问题

时间:2010-07-26 21:51:57

标签: jquery

我最近转换了代码以生成动态生成的结果。下面的代码可以很好地切换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");});

我显然做错了什么。任何帮助将不胜感激。

2 个答案:

答案 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");
});