Как мне остановить эффект в jQuery - PullRequest
11 голосов
/ 13 сентября 2008

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

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

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

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

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

Ответы [ 3 ]

15 голосов
/ 23 апреля 2012

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


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

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

10 голосов
/ 13 сентября 2008

Из документации jQuery:

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

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

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

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

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

2 голосов
/ 22 февраля 2016

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

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

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

$('#identifier').stop(true, true).effect("pulsate", { times: 1 }, 1);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...