Я хотел бы пульсировать div (стрелка вниз) на pageload. Когда пользователь нажимает стрелку вниз, другие div slidetoggles и анимация импульса останавливаются. Когда стрелка вниз будет нажата снова, другой div сдвинется вверх, и стрелка вниз начнет пульсировать снова.
Вот аналогичная идея, но пульс просто останавливается:
jQuery(".pulse").effect("pulsate", { times:1000 }, 2000).click(function(){
jQuery(this).stop(true, true);
});
Насколько я понимаю, метод .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();
pulsing = !pulsing;
Что делает эта строка кода>!
является логическим оператором NOT, который возвращаетfalse
если его единственный операнд может быть преобразован вtrue
, а в противном случае возвращаетtrue
. Таким образом, еслиpulsing
true
тогда!pulsing
false
, и наоборот;pulsing = !pulsing
линияpulsing = !pulsing
основном устанавливаетpulsing
противоположность тому, что было. (Если вы собираетесь кодировать в JS, вам действительно следует ознакомиться со всеми операторами - единственные операторы, которые я не использую на регулярной основе, это побитовые.)