Подтвердить что ты не робот

Как вызвать действие после нажатия() в JQuery?

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

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

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

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

Спасибо:)

4b9b3361

Ответ 1

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

$("#message_link").mouseup(function() {
    //Do stuff here
});

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

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

Ответ 2

setTimeout может помочь здесь

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

Это приведет к тому, что div будет добавлено ~ 100 мс после события клика, если выполняются некоторые_компоненты.

Ответ 3

вы можете писать события на таких элементах, как цепочка,

$(element).on('click',function(){
   //action on click
}).on('mouseup',function(){
   //action on mouseup (just before click event)
});

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