【问题标题】:Adding MouseOut delay to this piece of jQuery (menu nav)为这段 jQuery 添加 MouseOut 延迟(菜单导航)
【发布时间】:2010-09-03 11:51:22
【问题描述】:

我是一个绝对的 jQuery 菜鸟。我一直在关注向我的网站添加 CSS/jQuery 导航菜单的教程,并且我得到了它的工作。我唯一希望看到添加的是鼠标退出时的小延迟,因为下拉菜单会立即消失当您将鼠标移出时,这会使菜单使用起来有点烦人。这是我的脚本:

function mainmenu(){
$(" .top-menu ul ").css({display: "none"}); // Opera Fix
$(" .top-menu li").hover(function(){
  $(this).find('ul:first').css({visibility: "visible",display: "none"}).show(400);
  },function(){
  $(this).find('ul:first').css({visibility: "hidden"});
  });
}

 $(document).ready(function(){
 mainmenu();
});

有人愿意将所需的代码添加到此脚本中吗?我保证会研究你是如何做到的,所以我实际上会从中学习;-D

【问题讨论】:

    标签: jquery navigation mouseout


    【解决方案1】:

    你可以做这样的事情,给它一个 500 毫秒的延迟:

    function mainmenu(){
      $(".top-menu ul ").hide();
      $(".top-menu li").hover(function() {
        clearTimeout($.data(this, 'timeout'));
        $(this).find('ul:first').show(400);
      }, function() {
        $.data(this, 'timeout', setTimeout($.proxy(function() { 
           $(this).find('ul:first').hide();
        }, this), 500));
      });
    }
    $(mainmenu);
    

    这会通过setTimeout() 增加 500 毫秒的延迟,并仅使用 $.data() 将计时器 ID 与元素一起存储,当将鼠标悬停在元素中时,它将清除超时并且在您结束之前不会再次运行它out...所以你必须离开元素 500 毫秒才能隐藏它。

    或者,用hoverIntent plugin 做一些非常相似的事情,这就是这个问题。

    【讨论】:

      【解决方案2】:
      $(" .top-menu li").hover(function(){
          $(this).find('ul:first').css({visibility: "visible",display: "none"}).show(400);
      },function(){
      
          // Note here...
          setTimeout(function(){
              $(this).find('ul:first').css({visibility: "hidden"});
          }, 2000);
          // 2000 is a delay time in milliseconds, change it
      
      });
      

      【讨论】:

      • 您必须存储超时 ID...如果我将鼠标悬停在 back 元素中会怎样?无论我是否在积极使用它,它都会在 2 秒内隐藏 :) 此外,this 不会是您希望它在函数中出现的内容,您必须设置闭包的上下文或传递对元素。
      • 感谢大家的快速响应。代码确实有作用,但现在即使我离开导航部分,菜单也会保持打开状态。有任何想法吗 ? :)
      猜你喜欢
      • 2012-01-25
      • 2011-12-19
      • 2011-01-17
      • 1970-01-01
      • 2012-03-11
      • 2011-12-19
      • 2015-09-01
      • 1970-01-01
      • 2017-01-31
      相关资源
      最近更新 更多