如何在Jquery中单击()后调用一个动作?

时间:2011-06-26 18:42:24

标签: javascript jquery

我想在点击某个DOM元素后加载图片和其他一些动作,但我想在点击操作完成后加载它们。

这是一个代码示例:

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

问题是if条件在点击操作完成之前执行(或者至少这是我的印象)。我需要在单击操作完成后执行If条件。有人可以告诉我一个解决方案吗?

谢谢:)

3 个答案:

答案 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同时考虑了mousedownmouseup click

但是,{{1}}应该可以正常工作,因为在释放鼠标按钮之前它实际上不会触发。

答案 2 :(得分:3)

你可以在像链,

这样的元素上写事件
$(element).on('click',function(){
   //action on click
}).on('mouseup',function(){
   //action on mouseup (just before click event)
});

我用它来移除购物车物品。同一个对象,做了一些动作,在另一个动作之后