Jquery - используя toggle (), но отключите его, пока анимация не будет завершена - PullRequest
0 голосов
/ 23 августа 2010

Я использую функцию переключения jquery следующим образом:

$(".class").toggle( function() { //things to do... animations and so on }, function(){ // other things to do... } );

Теперь, когда я вызываю эффект переключения, нажимая очень часто, анимация двух функций не ждетдругой, чтобы закончить.Поэтому я хотел бы отключить эффекты переключения до тех пор, пока материал в каждой функции не будет завершен.Поэтому, когда первая функция вызывается переключателем, вторая не должна вызываться другим щелчком по элементу .class.И наоборот

Есть идеи, как мне это сделать?

Заранее спасибо, Фил

1 Ответ

2 голосов
/ 23 августа 2010

Вы можете добавить .click() привязанный обработчик перед переключателем, который делает это, например:

$(".class").click(function() {
  if($(".selector:animated").length) 
    return false;
}).toggle(function() { 
  //things to do... animations and so on 
}, function(){
  // other things to do... 
});

Что делает, если проверкаесли ваш селектор и :animated найдут какие-либо элементы (они все еще анимируются), он будет return false и предотвратит попадание обработчика .toggle().Это работает, потому что обработчики событий выполняются в том порядке, в котором они были связаны , поэтому, если первый возвращает false, второй не будет работать.

...