0

Как вызвать действие после click() в jQuery?

15

Я хочу загрузить изображение и выполнить некоторые другие действия после того, как я кликну на определенный элемент DOM, но мне нужно, чтобы эти действия выполнялись ПОСЛЕ завершения клика.

Вот пример кода:

$("#message_link").click(function() {
   if (some_conditions...) {
       $("#header").append("<div><img alt=\"Loader\" src=\"/images/ajax-loader.gif\" /></div>");
   }
});

Проблема в том, что условие if выполняется до того, как действие клика завершится (по крайней мере, такое у меня впечатление). Мне нужно, чтобы условие if выполнялось после завершения действия клика. Можете ли вы подсказать, как это можно сделать?

2 ответ(ов)

0

Если я правильно понял ваш вопрос, то вам нужен событие mouseup, а не click:

$("#message_link").mouseup(function() {
    // Ваш код здесь
});

Событие mouseup срабатывает, когда кнопка мыши отпускается, и не учитывает, была ли кнопка нажата на этом элементе, в то время как событие click учитывает как mousedown, так и mouseup.

Тем не менее, событие click должно работать нормально, так как оно срабатывает только после того, как кнопка мыши была отпущена.

0

Вы можете подписываться на события для элементов в цепочке, как показано в следующем примере:

$(element).on('click', function() {
   // Действие при клике
}).on('mouseup', function() {
   // Действие при отпускании кнопки мыши (прямо перед событием click)
});

Я использовал этот подход для удаления товаров из корзины. Это позволяет вам работать с одним и тем же объектом и выполнять одно действие после другого. Такой способ помогает сделать код более компактным и читаемым, а также увеличивает удобство обслуживания.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь