Как вызвать действие после click() в jQuery?
Я хочу загрузить изображение и выполнить некоторые другие действия после того, как я кликну на определенный элемент DOM, но мне нужно, чтобы эти действия выполнялись ПОСЛЕ завершения клика.
Вот пример кода:
$("#message_link").click(function() {
if (some_conditions...) {
$("#header").append("<div><img alt=\"Loader\" src=\"/images/ajax-loader.gif\" /></div>");
}
});
Проблема в том, что условие if выполняется до того, как действие клика завершится (по крайней мере, такое у меня впечатление). Мне нужно, чтобы условие if выполнялось после завершения действия клика. Можете ли вы подсказать, как это можно сделать?
2 ответ(ов)
Если я правильно понял ваш вопрос, то вам нужен событие mouseup
, а не click
:
$("#message_link").mouseup(function() {
// Ваш код здесь
});
Событие mouseup
срабатывает, когда кнопка мыши отпускается, и не учитывает, была ли кнопка нажата на этом элементе, в то время как событие click
учитывает как mousedown
, так и mouseup
.
Тем не менее, событие click
должно работать нормально, так как оно срабатывает только после того, как кнопка мыши была отпущена.
Вы можете подписываться на события для элементов в цепочке, как показано в следующем примере:
$(element).on('click', function() {
// Действие при клике
}).on('mouseup', function() {
// Действие при отпускании кнопки мыши (прямо перед событием click)
});
Я использовал этот подход для удаления товаров из корзины. Это позволяет вам работать с одним и тем же объектом и выполнять одно действие после другого. Такой способ помогает сделать код более компактным и читаемым, а также увеличивает удобство обслуживания.
Как перенаправить на другую веб-страницу?
Прокрутка к элементу с использованием jQuery
Как определить нажатие клавиши Esc?
Как получить данные формы с помощью JavaScript/jQuery?
Как выполнить код после сброса HTML-формы с помощью jQuery?