代码之家  ›  专栏  ›  技术社区  ›  st4ck0v3rfl0w

jquery.live()问题

  •  2
  • st4ck0v3rfl0w  · 技术社区  · 14 年前

    我最近转换了代码以生成动态生成的结果。下面的代码可以很好地切换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 回复  |  直到 14 年前
        1
  •  3
  •   user113716    14 年前

    使用时 .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");
    });
    
        2
  •  4
  •   skalee    14 年前

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

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

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