jquery - 如何以较小的延迟淡化菜单?

标签 jquery css fade

当您将鼠标悬停在#menu 上时,它会淡入#menu-big。我想在用户将鼠标移离 #menu-big 时添加延迟。

到目前为止,我的工作很有趣(第一次工作正常,然后就不能正常工作):http://jsbin.com/upopap/1

有什么想法吗?

jQuery

$(document).ready(function() {

  $('#menu').hover(
    // mouseover
    function(){
      $('#menu-big').fadeIn('fast');
    },
    // mouseout
    function(){
      setTimeout( function(){
        $('#menu-big').fadeOut('fast')
        }, 1000 );
    }
  );


});

HTML

  <div id="menu">
    <div id="menu-big">
      <ul>
        <li><a href=""><span>Meet our Staff</span></a></li>
        <li><a href=""><span>Services</span></a></li>
        <li><a href=""><span>Associations</span></a></li>
      </ul>
    </div>
  </div>

最佳答案

尝试了几次,但我可以在 Firefox 中重现您的问题。
我认为这可能更接近您要查找的内容:

Basic Working Example

$(document).ready(function () {
    $('#menu').mouseenter(function () {
        $('#menu-big').fadeIn(400);
    });
    $('#menu').mouseleave(function () {
        $('#menu-big').delay(800).fadeOut(400);
    });
});

API documentaion for .delay()

基本版本将涵盖您的要求,但您可能想要使用高级版本,因为它在触发悬停事件之前有延迟,这将解决将鼠标移入和移出 #菜单很大很快。

Advanced Working Example

$(function() {
    var timeoutId;
    $("#menu").hover(function() {
        if (!timeoutId) {
            timeoutId = window.setTimeout(function() {
                timeoutId = null;
                $("#menu-big").fadeIn('slow');
           }, 1000);
        }
    },
    function () {
        if (timeoutId) {
            window.clearTimeout(timeoutId);
            timeoutId = null;
        }
        else {
           $("#menu-big").delay(800).fadeOut('slow');
        }
    });
});

此方法改编自 This Answer如果它对你有用,你可能也想通过它进行投票。

关于jquery - 如何以较小的延迟淡化菜单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16917277/

相关文章:

html - 目录 XSL

css - 改进这个 CSS3 并达到相同的效果 - flexbox vertical align text

javascript - 您可以使用 angularJs ng-hide 使 div 淡入淡出吗?

javascript - 带滚动的响应式导航 DIV

jquery - 无法将 JSON 发送到服务器

javascript - 在 jQuery 中,我应该使用 parseFloat(el.width()) 还是 parseInt(el.width(),10)?更喜欢哪一个

javascript - 使用 jQuery 更改文本颜色两次

css - 加载动画并锁定页面上的所有元素

java - 使用计时器使图像淡入和淡出

jquery - 在 JQuery 中循环浏览背景图像