Javascript 菜单奇怪的问题
我已经使用jqueryn hoverIntent创建了一个菜单。你可以在这里查一下 要查看问题,请先悬停1,然后悬停2,然后悬停3,再返回2。请快速悬停。所有子菜单将打开,但两个子菜单下的子菜单将不会打开。 这是一种奇怪的行为,当向前移动时,子菜单会打开,当你向后移动时,会像一到二到三到二,二到三到四到三等等 该子菜单将不会打开Javascript 菜单奇怪的问题,javascript,jquery,Javascript,Jquery,我已经使用jqueryn hoverIntent创建了一个菜单。你可以在这里查一下 要查看问题,请先悬停1,然后悬停2,然后悬停3,再返回2。请快速悬停。所有子菜单将打开,但两个子菜单下的子菜单将不会打开。 这是一种奇怪的行为,当向前移动时,子菜单会打开,当你向后移动时,会像一到二到三到二,二到三到四到三等等 该子菜单将不会打开 这是怎么回事?当你悬停在链接上时,仍在上升的子菜单不会再次下降。可能是注册悬停的函数检查菜单是否已经展开,当它上升时仍然是这样,然后决定它不必再次下降,即使它应该下降
这是怎么回事?当你悬停在链接上时,仍在上升的子菜单不会再次下降。可能是注册悬停的函数检查菜单是否已经展开,当它上升时仍然是这样,然后决定它不必再次下降,即使它应该下降 请发布一些代码,以便我们可以帮助解决此问题。您的问题是,的超时在整整一秒钟内都没有发生,因此这些调用使事情处于错误状态:
$('#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
});
我承认这有点混乱,但是…这是插件没有提供一个干净的方法来实现这一点的结果