2010-06-10 77 views
1

我有一个菜单,当用户选择一个链接时,切换为。菜单有不同显示和隐藏动画附加,并且我想要阻止在动画运行时切换。下面的代码片段工作,但如果链接被点击两次快速翻转的切换状态(即如果用户点击该链接很快两次,下一次点击就会触发同样的操作):暂时禁用jQuery切换

<a href="" id="button">Menu</a> 
<div id="menu">...</a> 

<script> 
$("#button").toggle(
    function (e) { 
     if $("#menu").is(":animated")) return false; 
     $("#menu").show("drop", {}, "slow"); 
    }, 
    function (e) { 
     if ("#menu").is(":animated")) return false; 
     $("#menu").hide("bounce", {}, "slow"); 
    } 
); 
</script> 

哪有我阻止切换状态切换?

谢谢。

+0

你不应该继续编辑的问题,做一个适用的例子,当第一次发布:) – 2010-06-10 19:05:53

+0

对不起!实际的脚本非常大,我想提高可读性。 – 2010-06-10 19:09:42

回答

2

使用.click(),并检查元素click处理程序的状态,使用:not():animated:visible选择,像这样:

$("#button").click(function() { 
    var menu = $("#menu:not(:animated)"); 
    if(menu.is(":visible")) menu.hide("bounce", {}, "slow"); 
    else menu.show("drop", {}, "slow"); 
}); 

这不依靠国家,这是一个更简单的:)

+1

尼克又做到了! – 2010-06-10 19:05:39

+1

@Mark Schultheiss:问题发生了变化,但正在更新... – 2010-06-10 19:06:09

+1

嗨,尼克。对不起,我忘了提及我正在运行不同的节目并隐藏动画。任何方式来增加对此的支持? – 2010-06-10 19:07:16