我正在尝试使用子导航下拉菜单构建一个简单的导航。所需的功能是,如果鼠标尚未输入,则下拉菜单会在一定的秒数后隐藏自身。虽然如果它目前正在盘旋,我想清除Timeout,以便在鼠标位于其中时它不会隐藏。
function hideNav() {
$('.subnav').hover(function(){
clearTimeout(t);
}, function() {
$(this).hide();
});
}
$('#nav li').mouseover(function() {
t = setTimeout(function() { $('.active').hide()}, 4000);
//var liTarget = $(this).attr('id');
$('.active').hide();
$('.subnav', this).show().addClass('active');
navTimer;
hideNav();
});
我错过了什么?我把手柄错了吗?
答案 0 :(得分:0)
在设置新的超时之前,您还应该在鼠标悬停时清除超时 否则,之前启动的超时仍将处于活动状态,但不能再通过t变量访问。
答案 1 :(得分:0)
您可以将计时器变量设为全局。
function hideNav() {
$('.subnav').hover(function(){
clearTimeout(window.t);
}
}
$('#nav li').mouseover(function() {
window.t = setTimeout(function() { $('.active').hide()}, 4000);
});
答案 2 :(得分:-1)
尝试以推荐的方式(JS语句作为字符串):
t = setTimeout("$('.active').hide()", 4000);