Javascript 菜单奇怪的问题

Javascript 菜单奇怪的问题,javascript,jquery,Javascript,Jquery,我已经使用jqueryn hoverIntent创建了一个菜单。你可以在这里查一下 要查看问题,请先悬停1,然后悬停2,然后悬停3,再返回2。请快速悬停。所有子菜单将打开,但两个子菜单下的子菜单将不会打开。 这是一种奇怪的行为,当向前移动时,子菜单会打开,当你向后移动时,会像一到二到三到二,二到三到四到三等等 该子菜单将不会打开 这是怎么回事?当你悬停在链接上时,仍在上升的子菜单不会再次下降。可能是注册悬停的函数检查菜单是否已经展开,当它上升时仍然是这样,然后决定它不必再次下降,即使它应该下降

我已经使用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
});
我承认这有点混乱,但是…这是插件没有提供一个干净的方法来实现这一点的结果