当mouseout时,jQuery Dropdown菜单会消失
我试图用CSS来实现世界上最简单的Dropdown,并希望用jQuery对它进行一些动画制作。 但是jQuery中的“hover”function使得下拉一旦离开触发元素(ul#menu li a)就会消失,因此您无法从下拉列表中选择任何内容。
您可以在此处查看代码和相关问题: http : //jsfiddle.net/Xx2Z7/
我正在尝试所有的东西,并在网上搜索,只是发现许多其他人遇到了这个问题,但没有一个解决方案适合我,我正在寻找最简单和最清晰的代码。
谢谢。
这里是:
的jsfiddle
基本上,我改变了你的js事件,现在只能通过你的li元素的mouseenter和mouseleave来控制动画。 li包含子菜单,因此即使您离开链接所在的区域,子菜单也将保持可见。
$(document).ready(function() { // Menus $('ul.menu').hide(); $('ul#main-nav li').mouseenter(function() { $('ul.menu', this).animate({opacity: 'show'}, 'slow'); }); $('ul#main-nav li').mouseleave(function() { $('ul.menu', this).animate({opacity: 'hide'}, 'fast'); }); });
你快到了。 由于您的子菜单是li
,因此您只需要检测鼠标hover在li
而不是锚点上(将鼠标移到li
子上计算为鼠标本身):
$('ul#main-nav li').hover(function() { $(this).find('ul.menu').animate({ opacity: 'show' }, 'slow'); }, function() { $(this).find('ul.menu').animate({ opacity: 'hide' }, 'fast'); });
你在上触发了hover,所以当鼠标移出
,hide()会触发。
$(document).ready(function() { // Menus $('ul.menu').hide(); $('ul#main-nav li').hover(function() { $(this).find('ul.menu').animate({opacity: 'show'}, 'slow'); }, function() { $(this).find('ul.menu').animate({opacity: 'hide'}, 'fast'); }); $('ul.menu').mouseenter(function() { $(this).show(); }); $('ul.menu').mouseleave(function() { $(this).hide(); }); });