菜单奇怪的问题

时间:2010-09-10 10:14:21

标签: javascript jquery

我使用jQuery n hoverIntent创建了一个菜单。你可以在这里查看
http://bit.ly/dnAEtt

要看到问题,请将一个然后两个然后三个然后转回两个(请稍微快速移动)。所有子菜单都将打开,但两个下的子菜单将无法打开 这是一种奇怪的行为,当您向前移动时,子菜单会打开(如一到两到三到两,二到三到四到三等) 该子菜单无法打开。

那里有什么事?

2 个答案:

答案 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
});

我承认它有点麻烦,但是......这是插件无法提供干净方法的结果。

You can see the updated/working version here

答案 1 :(得分:-1)

当您将鼠标悬停在其链接上时,仍在上升的子菜单不会再次显示。注册悬停的功能可能会检查菜单是否已经扩展(当它上升时仍然是它),然后决定它不必再次下降(即使它应该)。

请发布一些代码,以便我们帮忙解决。