Как мне остановить эффект в jQuery

javascript jquery

5891 просмотра

4 ответа

У меня есть страница, которая использует

$(id).show("highlight", {}, 2000);

выделить элемент, когда я запускаю ajax-запрос, который может потерпеть неудачу, поэтому я хочу использовать

$(id).show("highlight", {color: "#FF0000"}, 2000);

в обработчике ошибок. Проблема заключается в том, что если первая подсветка еще не закончена, вторая помещается в очередь и не будет работать до тех пор, пока первая не будет готова. Отсюда вопрос: могу ли я как-то остановить первый эффект?

Автор: Mr Shark Источник Размещён: 20.07.2019 11:27

Ответы (4)


10 плюса

Решение

Из документов JQuery:

http://docs.jquery.com/Effects/stop

Остановите текущую анимацию на соответствующих элементах. ...

Когда .stop()вызывается элемент, текущая анимация (если есть) немедленно останавливается. Если, например, элемент скрывается .slideUp()при .stop()вызове, элемент будет по-прежнему отображаться, но будет частью его предыдущей высоты. Функции обратного вызова не вызываются.

Если для одного элемента вызывается более одного метода анимации, более поздние анимации помещаются в очередь эффектов для элемента. Эти анимации не начнутся, пока не завершится первая. Когда .stop()вызывается, следующая анимация в очереди начинается немедленно. Если clearQueueпараметру присвоено значение true, то остальные анимации в очереди удаляются и никогда не запускаются.

Если jumpToEndаргументу присвоено значение true, текущая анимация останавливается, но элементу сразу присваиваются целевые значения для каждого свойства CSS. В нашем .slideUp()примере выше , элемент будет немедленно скрыт. Функция обратного вызова тогда немедленно вызвана, если обеспечено ...

Автор: Ryan Lanciaux Размещён: 12.09.2008 08:42

15 плюса

Я перечислил это как комментарий к принятому ответу, но я подумал, что было бы неплохо опубликовать его как отдельный ответ, так как он, кажется, помогает некоторым людям, имеющим проблемы с .stop()


К вашему сведению - я тоже искал этот ответ (пытаясь остановить эффект Пульсата), но у меня .stop()в коде был символ .

После просмотра документов мне понадобилось .stop(true, true)

Автор: Dutchie432 Размещён: 23.04.2012 12:42

2 плюса

.stop (true, true) замораживает эффект, поэтому, если он невидим в то время, он остается невидимым. Это может быть проблемой, если вы используете пульсирующий эффект.

$('#identifier').effect("pulsate", {times:5}, 1000);

Чтобы обойти это я добавил

$('#identifier').stop(true, true).effect("pulsate", { times: 1 }, 1);
Автор: fireydude Размещён: 22.02.2016 11:10

0 плюса

В моем случае использование приведенного ниже кода не работает и сохраняет значение непрозрачности:

$('#identifier').stop(true, true).effect("pulsate", { times: 1 }, 1);

Для меня просто убрать непрозрачность работают:

$('#identifier').stop(true, true).css('opacity','');

Автор: mike85 Размещён: 20.07.2019 08:26
Вопросы из категории :
32x32