запускать анимацию, только если не запущен пользовательский интерфейс jQuery

0

Я использую jQuery UI Bounce Effect для события click, подобного этому

$("#myelm").click(function(){
    $(".wlbutton").children("span.new").effect( "bounce", "slow");
});

Я бы хотел запустить эффект только в том случае, если он еще не запущен. Поэтому, если вы дважды щелкнете, это будет действовать только при первом нажатии. Как я могу это достичь?

Я попытался очистить очередь с помощью jQuery.stop() без везения.

2 ответа

3
Лучший ответ

Вы можете использовать .not для фильтрации:

$('#myelm').click(function(){
   $('.wlbutton').children('span.new').not(':animated').effect('bounce', 'slow');
});

Однако я бы использовал .is функцию для проверки вместо фильтра из-за чтения кода

2

Используйте :animated селектор, чтобы проверить, является ли конкретный элемент animating или нет. Если он в настоящее время становится анимированным, просто позвольте этому событию click игнорировать.

Пытаться,

$("#myelm").click(function(){
    var xEle = $(".wlbutton").children("span.new");
    if(xEle.is(':animated')) { return; }
    xEle.effect( "bounce", "slow");
});

Другой способ - использовать .stop().

$("#myelm").click(function(){
    $(".wlbutton").children("span.new").stop().effect( "bounce", "slow");
});

DEMO

  • 0
    Я пробовал оба эти метода, но я не буду работать. Вот скрипка jsfiddle.net/8EWAN/1
  • 0
    @daker Я только что представил демо, пожалуйста, посетите.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню