jquery - 将 setTimeout 添加到现有 jQuery 脚本的语法问题

标签 jquery settimeout

我想在以下代码中添加一个 setTimeout ,以便在执行 fadeOut 效果之前有一个短暂的暂停。

$(document).ready(function() {  
    $('#menu li').hover(
        function() {
            $('ul', this).slideDown(50);
        }, 
        function() {
            $('ul', this).fadeOut(100);
        }
    );
});

这就是我正在尝试的,但我猜语法一定是错误的:

$(document).ready(function() {  
    $('#menu li').hover(
        function() {
            $('ul', this).slideDown(50);
        },
        function() {
            setTimeout(function() {
                $('ul,' this).fadeOut(100);
            });
        }
    );
});

抱歉,如果这是一个愚蠢的问题。我是 jQuery 的初学者。

最佳答案

this 的含义在 setTimeout() 中是不同的。您需要在变量中引用所需的 this 或首先获取 ul 并引用它。

var th = this;
setTimeout(function() {
    $('ul', th).fadeOut(100);
});

var $ul = $('ul',this);
setTimeout(function() {
    $ul.fadeOut(100);
});

关于jquery - 将 setTimeout 添加到现有 jQuery 脚本的语法问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3497586/

相关文章:

javascript - jQuery 演练插件

jquery - AJAX 和 YouTube : 'X-Frame-Options' to 'SAMEORIGIN' .

javascript - 无法从 chrome 扩展的回调中的 setTimeout 关闭打开的 chrome 窗口

javascript - jQuery foreach 中的 setTimeout

javascript - 检查是否超时等待运行?

javascript - Django:语法错误:意外的标记<

c# - ASP.NET MVC2 AsyncController 可以访问 HttpContext.Current 吗?

javascript - 当单选按钮从选中状态变为未选中状态时该怎么办?

相当于 Ruby Timeout 模块的 JavaScript/CoffeeScript

javascript setTimeout 没有做我期望的事情