【发布时间】:2013-01-07 01:40:00
【问题描述】:
我想要完成的是有一个在单击“按钮”时会显示的菜单(按钮和菜单位于不同的元素中,因此鼠标最初不会悬停在菜单上)。
如果在超时期间未将鼠标悬停在菜单上,则菜单应自行隐藏(目前它会这样做,但仅在第一次单击时)。
另外,如果元素悬停在上面,我想在鼠标悬停时隐藏并清除计时器并再次单击按钮将重置超时(它可能不会重置?)。
我已经尝试了几个化身,但我尝试过的都没有表现正确,我正在寻求建议。这是我目前正在使用的:
var mytimer = window.setTimeout(function() {$('.menu-div').slideUp(function() {
window.clearTimeout(this.mytimer);
})
}, 5000);
$().ready(function(){
$('#menu-button').click(function () {
$('.menu-div').slideDown();
$(mytimer);
});
$('.menu-div').mouseenter(function() {
window.clearTimeout(this.mytimer);
});
$('.menu-div').mouseout(function() {
$('.menu-div').slideUp(200);
});
});
【问题讨论】:
-
garagetimer还用在什么地方?您的代码仅使用它来清除超时... -
假设您想重新激活计时器,但完全不清楚预期的行为是什么。 Garagetimer 在任何地方都没有定义为
setTimout。目前myTimer仅在页面加载时被激活。不起作用的代码永远不能很好地替代解释它应该做什么 -
抱歉,garagetimer 不应该在里面。那是一个错字。
-
是的,我希望计时器在单击按钮时重新激活。
-
你使用 var mytimer 和 this.mytimer 好像它们是同一个东西。
标签: javascript jquery timeout settimeout