我正在处理的导航菜单具有默认的 CSS 行为(对于那些禁用 JavaScript 的少数人)。默认不显示子菜单:
.main-navigation ul ul {
display:none;
}
悬停时,显示子菜单:
.main-navigation ul li:hover > ul {
display:block;
}
对于有 JavaScript 意识的大多数人来说,菜单由以下 jQuery 代码片段组成:
jQuery(document).ready(function($) {
/* cancel the default CSS hover behavior */
$('.main-navigation ul li').on('mouseover',function(){
$('.main-navigation ul li:hover > ul').css('display', 'none');
$(this).css('cursor', 'pointer');
});
/* toggle submenu display (if the submenu actually exists) */
$('.main-navigation ul li a').click(function() {
var li = $(this).closest('li');
if(li.has('ul')) li.find('ul').slideToggle(100);
});
});
这种切换效果很好,除非它只在鼠标光标停留在父链接上时才有效。如果子菜单打开,并且用户碰巧将鼠标从父链接上移开,则子菜单会突然关闭。
问题:如果子菜单已经打开,如何在鼠标移出时保持子菜单打开?
我尝试将这样的内容添加到我的 jQuery 代码段中:
$('.main-navigation ul li').on('mouseout',function(){
if ($('.main-navigation ul li ul').css('display') = 'none') {
$('.main-navigation ul li ul').css('display', 'none');
} else if ($('.main-navigation ul li ul').css('display') = 'block') {
$('.main-navigation ul li ul').css('display', 'block');
}
});
它不仅是平庸的编码,而且实际上也不起作用。;-(
我应该如何解决这个问题?
提前感谢您的建议!