2010-06-10 4 views
1

У меня есть меню toggled, когда пользователь выбирает ссылку. В меню было разные показать и скрыть анимация прилагается, и я хочу предотвратить переключиться во время анимации. Следующий фрагмент кода работает, но переворачивает состояние переключения если нажата ссылка быстро дважды (то есть, если пользователь нажимает на ссылку дважды быстро, последующее нажатие вызовет те же действия):Временно запретить JQuery Toggle

<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

Вы не должны продолжать редактирование вопроса, примените пример при первом размещении :) –

+0

Извините! Фактический сценарий очень велик, и я хотел бы повысить удобочитаемость. –

ответ

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

Ник делает это снова! –

+1

@Mark Schultheiss: вопрос изменился, хотя, обновление ... –

+1

Привет, Nick. Извините, я забыл упомянуть, что я запускаю разные шоу и скрываю анимацию. Любые способы добавить поддержку для этого? –

Смежные вопросы