我试图在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);

09-07 18:06