Как вызвать действие после нажатия() в JQuery?
Я хочу загрузить изображение и некоторые другие действия после щелчка по определенному элементу DOM, но я хочу загрузить их ПОСЛЕ завершения действия нажатия.
Вот пример кода:
$("#message_link").click(function(){
if (some_conditions...){
$("#header").append("<div><img alt=\"Loader\"src=\"/images/ajax-loader.gif\" /></div>");
}
});
Проблема в том, что условие if выполняется до завершения действия клика (или, по крайней мере, это мое впечатление). Мне нужно, чтобы условие If выполнялось после завершения действия click. Может кто-нибудь, пожалуйста, скажите мне решение?
Спасибо:)
Ответы
Ответ 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)
});
Я использовал его для удаления элементов корзины. тот же объект, выполняющий какое-то действие, после другого действия