我有一些 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)。
问题是当用户确实想要鼠标移开时,setTimeout 中的函数不会被调用。根据这个页面:http://www.w3schools.com/js/js_timing.asp我的语法是正确的,但如果我这样写,我只能从 setTimeout 调用 HideMenu 函数:
var t = setTimeout(HideMenu, 300);
为什么它不能按书面方式工作,我可以将变量作为参数传递到函数中?
虽然标记的正确答案是实现这一目标的一种方法......但我不认为这是正确的。
请参阅附件 JS Fiddle:http://jsfiddle.net/PWHw3/
我们在这里所做的基本上是:
setTimeout(function, timeout, param);
Example:
var test = function(a){
var b = (a) ? a : "fail";
alert(b);
};
setTimeout(test, 500, "works");
这对我有用,并且消除了传递两个函数的需要。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)