2014-10-28 51 views
0

当鼠标离开祖父母div时触发fadeOut的下拉菜单有点麻烦,我将这个问题搜索到死亡,还没有找到一个优雅的解决方案。这里是我的代码:link离开祖父母div时的鼠标箭头触发

var main = function() { 
    $('nav').mouseenter(function() { 
     $('ul li ul').fadeIn('400'); 
    }); 

    $('nav ul li').mouseleave(function(){ 
     $('ul li ul').fadeOut('400'); 
    }); 
} 

$(document).ready(main); 
+0

解释清楚的问题。 – 2014-10-28 17:49:07

回答

0

FIDDLE

$(this).find('ul').fadeOut('400'); 

是正确的,因为$('ul>li>ul').fadeOut('400');无法针对具体的(current)里。

使用下列标记的分层流量

var main = function() { 
     $('nav').mouseenter(function() { 
      $('ul li ul').fadeIn('400'); 
     }); 

     $('nav ul li').mouseleave(function() { 
      $(this).find('ul').fadeOut('400'); 
     }); 
    }; 
+0

感谢您的帮助!我想出了我最初的问题(除了这个问题之外)是''position:absolute''.container' CSS属性导致它中止:[FIDDLE](http://jsfiddle.net/mftWK/82/ )。为什么绝对定位从一个低得多的流量导致这个? – 2014-10-28 18:17:18

1

DEMO:MY FIDDLE

你需要指定哪些元素()你试图附加的事件。通过添加'>'你强制只将该事件附加到该元素的子元素。试试这个:

var main = function() { 
     $('nav').mouseenter(function() { 
      $(this).find('ul').fadeIn('400'); 
     }); 

     $('nav>ul>li').mouseleave(function() { 
      $(this).find('ul').fadeOut('400'); 
     }); 
    }; 
+0

你应该包括解释为什么这可能工作,只是提供的代码不会教导用户什么是错的,以及如何解决它。 – 2014-10-28 17:49:37

+0

@PatrickEvans良好的通话。在我完成编辑之前,你已经得到了我。谢谢 – CodeGodie 2014-10-28 17:54:16