【发布时间】:2011-03-02 14:38:30
【问题描述】:
我有一些看起来像这样的 jQuery 代码:
$('.mainNav2 > li').mouseleave(function(){
var someNum = Math.random();
$(this).attr('id', someNum);
var t = setTimeout("HideMenu(someNum)", 200);
$('li.clicked').mouseenter(function() {
clearTimeout(t);
});
});
function HideMenu(id) {
$('#'+id).removeClass('clicked');
}
它的目的是在鼠标离开时隐藏一个超级菜单,但也考虑到鼠标意外离开,使用 300 毫秒的 setTimeout。如果用户在 300 毫秒内将鼠标指针移回 li,则不会隐藏菜单,因为调用了 clearTimout(t)。
问题是当用户打算鼠标移出时,setTimout 中的函数没有被调用。根据这个页面:http://www.w3schools.com/js/js_timing.asp我的语法是正确的,但是如果我这样写,我只能得到从 setTimeout 调用的 HideMenu 函数:
var t = setTimeout(HideMenu, 300);
为什么它不能像写的那样工作,我可以将变量作为参数传递给函数?
【问题讨论】:
标签: jquery settimeout