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