javascript - setTimeout 不触发 jQuery

标签 javascript jquery settimeout

我正在尝试在 document.ready()jquery.mouseleave() 内部使用 setTimeout 调用函数。由于某种原因什么也没有发生,它甚至没有给我一个错误。 代码(JS):

var stay = false;
function dropHide()
{
    alert(stay);
    if(stay == false)
    {
        $("#products-dropdown").slideUp();
    }
}
$(document).ready(function()
{
    $("#products-item").mouseenter(function()
    {
        stay = true;
        $("#products-dropdown").slideDown();
    });
    $("#products-dropdown-item-1").mouseenter(function()
    {
        stay = true;
    });
    $("#products-dropdown-item-2").mouseenter(function()
    {
        stay = true;
    });
    $("#products-dropdown-item-1").mouseleave(function()
    {
        stay = false;
        setTimeout("dropHide", 400);
    });
    $("#products-dropdown-item-2").mouseleave(function()
    {
        stay = false;
        setTimeout("dropHide", 400);
    });
    $("#products-item").mouseleave(function()
    {
        stay = false;
        setTimeout("dropHide", 400);
    });
});

最佳答案

setTimeout 期望第一个参数是函数表达式,在提供的示例中,正在传递 "dropHide" ,其数据类型为 string

试试这个:

setTimeout(dropHide, 400);

关于javascript - setTimeout 不触发 jQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34473720/

相关文章:

javascript - 与backbone.js 的命名约定(在rails 上)

javascript - 关键字和文字之间需要空格

javascript - 通过 jQuery 将来自 Firebase 的图像设置为 div 的背景

javascript - promise 和访问

javascript - 为什么 jquery fadeOut 与 setTimeout 的行为很奇怪?

javascript - 什么是基于 DOM 的 XSS?

javascript - 当你编写自己的jquery函数时,这意味着什么?

jQuery UI 对话框顶部间距

Javascript:如何清除非全局(封闭)setTimeout?

javascript - 在计时器和 post ajax 请求之间传递对象(匿名函数)