我想在点击某个DOM元素后加载图片和其他一些动作,但我想在点击操作完成后加载它们。
这是一个代码示例:
$("#message_link").click(function(){
if (some_conditions...){
$("#header").append("<div><img alt=\"Loader\"src=\"/images/ajax-loader.gif\" /></div>");
}
});
问题是if条件在点击操作完成之前执行(或者至少这是我的印象)。我需要在单击操作完成后执行If条件。有人可以告诉我一个解决方案吗?
谢谢:)
答案 0 :(得分:37)
setTimeout
可以在这里提供帮助
$("#message_link").click(function(){
setTimeout(function() {
if (some_conditions...){
$("#header").append("<div><img alt=\"Loader\"src=\"/images/ajax-loader.gif\" /></div>");
}
}, 100);
});
如果满足some_conditions,这将导致在发生click事件后约100ms附加div。
答案 1 :(得分:35)
如果我已正确理解您的问题,那么您正在寻找mouseup
事件,而不是click
事件:
$("#message_link").mouseup(function() {
//Do stuff here
});
释放鼠标按钮时会触发mouseup
事件,并且不会考虑是否在该元素上按下了鼠标按钮,而click
同时考虑了mousedown
和mouseup
click
。
但是,{{1}}应该可以正常工作,因为在释放鼠标按钮之前它实际上不会触发。
答案 2 :(得分:3)
你可以在像链,
这样的元素上写事件$(element).on('click',function(){
//action on click
}).on('mouseup',function(){
//action on mouseup (just before click event)
});
我用它来移除购物车物品。同一个对象,做了一些动作,在另一个动作之后