我使用jQuery n hoverIntent创建了一个菜单。你可以在这里查看
http://bit.ly/dnAEtt
要看到问题,请将一个然后两个然后三个然后转回两个(请稍微快速移动)。所有子菜单都将打开,但两个下的子菜单将无法打开 这是一种奇怪的行为,当您向前移动时,子菜单会打开(如一到两到三到两,二到三到四到三等) 该子菜单无法打开。
那里有什么事?
答案 0 :(得分:1)
你的问题是hoverIntent
plugin的超时没有发生另一整秒,所以这些调用会让事情处于错误的状态:
$('#nav-bar > ul > li').children('div:visible').slideUp();
$('#nav-bar > ul > li').children('a').removeClass('current');
您实际上需要清除计时器并自行执行mouseout处理程序,如下所示:
function outHandler() {
$(this).children('div').slideUp();
$(this).children('a').removeClass('current', 450);
}
$('#nav-bar > ul > li').hoverIntent({
over: function() {
$('#nav-bar > ul > li:has(div:visible)').each(function() {
this.hoverIntent_t = clearTimeout(this.hoverIntent_t);
this.hoverIntent_s = 0;
outHandler.call(this);
});
$(this).children('div').slideDown('slow');
$(this).children('a').addClass('current', 250);
},
timeout: 1000,
out: outHandler
});
我承认它有点麻烦,但是......这是插件无法提供干净方法的结果。
答案 1 :(得分:-1)
当您将鼠标悬停在其链接上时,仍在上升的子菜单不会再次显示。注册悬停的功能可能会检查菜单是否已经扩展(当它上升时仍然是它),然后决定它不必再次下降(即使它应该)。
请发布一些代码,以便我们帮忙解决。