我有一个dropUp菜单,其中包含以下内容:
$(document).ready(function(){
var opened = false;
$("#menu_tab").click(function(){
if(opened){
$("#menu_box").animate({"top": "+=83px"}, "slow");
setTimeout(function(){
$("#menu_box").animate({"top": "+=83px"}, "slow");
}, 2000);
clearTimeout();
}else{
$("#menu_box").animate({"top": "-=83px"}, "slow");
}
$("#menu_content").slideToggle("slow");
$("#menu_tab .close").toggle();
opened = opened ? false : true;
});
});
因此,在单击menu_tab后,菜单会一直向下并保持不变直到再次单击,但我想要超时,以便在说完2秒后菜单再次下降。
我显然编码错误,因为超时无效。任何帮助,将不胜感激! TIA。
答案 0 :(得分:1)
我认为你正在尝试做这样的事情:
试一试: http://jsfiddle.net/YFPey/
var opened = false;
var timeout;
$("#menu_tab").click(function() {
// If there's a setTimeout running, clear it.
if(timeout) {
clearTimeout(timeout);
timeout = null;
}
if(opened) {
$("#menu_box").animate({"top": "+=83px"}, "slow");
} else {
$("#menu_box").animate({"top": "-=83px"}, "slow");
// Set a timeout to trigger a click that will drop it back down
timeout = setTimeout(function() {
timeout = null;
$("#menu_tab").click();
}, 2000);
}
$("#menu_content").slideToggle("slow");
$("#menu_tab .close").toggle();
opened = !opened;
});
答案 1 :(得分:0)
你在这里使用clearTimeout()是错误的。您需要传递对使用setTimeout()创建该计时器时返回的ID的引用。
不能说这是否会导致你的问题(可能不是)。如果你在Javascript错误控制台中得到任何可能有帮助的东西。
答案 2 :(得分:0)
有两件事让我感到高兴:
opened
开头为false,因此定时器仅在第二次点击时启动。opened
。