Как запустить импульсную анимацию после ее остановки

0

Я хотел бы пульсировать div (стрелка вниз) на pageload. Когда пользователь нажимает стрелку вниз, другие div slidetoggles и анимация импульса останавливаются. Когда стрелка вниз будет нажата снова, другой div сдвинется вверх, и стрелка вниз начнет пульсировать снова.

Вот аналогичная идея, но пульс просто останавливается:

jQuery(".pulse").effect("pulsate", { times:1000 }, 2000).click(function(){
    jQuery(this).stop(true, true);
});
Теги:
toggle
slidetoggle
pulse

1 ответ

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

Насколько я понимаю, метод .effect() не .effect() анимацию неограниченно, поэтому вам нужно продолжать называть ее каждый раз, когда она заканчивается, возможно, вызывая анимацию внутри функции, которая также предоставляется в качестве полного обратного вызова.

Что касается остановки, когда другой div отображается и перезагружается после этого, вы можете использовать флаг, чтобы решить, какой способ переключиться, возможно, что-то вроде этого:

function keepPulsing() {
    $pulse.effect("pulsate", 500, keepPulsing);
}
var pulsing = true,
    $pulse = jQuery(".pulse").click(function(){
        if (pulsing) {
            jQuery(".other").slideDown();
            jQuery(this).stop(true, true).css("opacity",1);
        } else {
            jQuery(".other").slideUp();
            keepPulsing();
        }
        pulsing = !pulsing;        
    });
keepPulsing();

Демо: http://jsfiddle.net/87hy2/

  • 0
    pulsing = !pulsing; Что делает эта строка кода>
  • 0
    ! является логическим оператором NOT, который возвращает false если его единственный операнд может быть преобразован в true , а в противном случае возвращает true . Таким образом, если pulsing true тогда !pulsing false , и наоборот; pulsing = !pulsing линия pulsing = !pulsing основном устанавливает pulsing противоположность тому, что было. (Если вы собираетесь кодировать в JS, вам действительно следует ознакомиться со всеми операторами - единственные операторы, которые я не использую на регулярной основе, это побитовые.)

Ещё вопросы

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