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

jquery live hover不工作

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

    我在IE上遇到了一些由于mouseover和mouseout引起的下拉式闪烁问题,所以我更改了代码 像ajax中的动态数据一样悬停和活动。

    但是下面的代码不起作用,我也得到了最新的jquery。

    以下代码执行时没有错误,但无法工作

    $('.cs-rec').live("hover",
            function() {       
            $(this).find('.cs-title').css('text-decoration','underline');
            },
            function() {
             $(this).find('.cs-title').css('text-decoration','none');
            }
        );   
    
    5 回复  |  直到 14 年前
        1
  •  3
  •   Nick Craver    14 年前

    如果你不需要IE6的支持,那就用@patrick的解决方案。

    如果你 必须支持它:没有2个方法重载 .live() 你需要这样分开:

    $('.cs-rec').live("mouseenter", function() {       
      $(this).find('.cs-title').css('text-decoration','underline');
    }).live("mouseleave", function() {
      $(this).find('.cs-title').css('text-decoration','none');
    });   
    

    或者,jQuery 1.4.3+中的(虽然还不在文档中)可以使用一个映射,如下所示:

    $('.cs-rec').live({
      mouseenter: function() {       
        $(this).find('.cs-title').css('text-decoration','underline');
      },
      mouseleave: function() {
        $(this).find('.cs-title').css('text-decoration','none');
      }
    });
    
        2
  •  1
  •   Justin Niessner    14 年前

    绑定到悬停是可能的,但很棘手:

    从jQuery 1.4.1开始,悬停事件可以 指定(映射到mouseenter 还有穆塞莱夫,依次是 映射到mouseover和mouseout)。

    您必须使用单个方法,然后根据事件类型切换行为(代码示例也取自jQuery文档):

    $('.hoverme').live('hover', function(event) {
        if (event.type == 'mouseenter') {
            // do something on mouseover
        } else {
            // do something on mouseout
        }
    });
    
        3
  •  1
  •   user113716    14 年前

    你不使用CSS的原因是什么?IE6不起作用,但其他大多数都会。

    .cs-red .cs-title {
        text-decoration: none;
    }
    .cs-red:hover .cs-title {
        text-decoration: underline;
    }
    

    编辑: 查看您的站点,如果您正在讨论的是导航区域,则可以调整标记,以便 <a> 在每个 <li> 扩展到 <li> .

    这样,就可以支持IE6(将 :hover <a> ).

        4
  •  1
  •   Ashish Sajwan    11 年前
    $('.edit_hover').live('hover', function(event) {
      if (event.type == 'mouseenter') {
        // first function here
      } else {
        // second function here
      }
    });
    
        5
  •  0
  •   idil miray    12 年前

    这是真的。。。

    $("#your_div_id").live('mouseover',function(){
    
        $(this).find(".child_div").css('background-color','#111111');
    
    }).live('mouseout',function(){
    
         $(this).find(".child_div").css('background-color','#757575');
    });