2012-01-19 81 views
0

我有一个.click()功能,单击按钮时执行某些操作。我希望它显示一个加载图像,运行一些“东西”,然后删除加载图像时,“东西”完成。如何使按钮按下时jQuery函数按顺序运行?

的Javascript代码示例:

$("#button").click(
function(){ 
    shoeLoadingImage(); 
    /************************************************************************** 
    * 
    * other actions to be performed after showLoadingImage() is finished 
    * 
    **************************************************************************/ 
    //Whats below should only to be triggered after above actions above are finished 
    hideLoadingImage(); 
} 
); 

通过使用一对夫妇的建议,在这里,我想出了一个解决方案。它的工作原理,但我相信有更好的方法来做到这一点,因为我的loading.gif被加载时被冻结。仅供参考:在success: function(){}下列出的其他操作包含一些需要一些时间才能完成的操作,这是此加载映像的全部用途。

$("#highlight").click(
function(){ 
    $.ajax({ 
     beforeSend: function(){ showLoadingImage(); }, 
     success: function(){ 
      /************************************************************************** 
    * 
    * other actions to be performed after showLoadingImage() is finished 
    * 
    **************************************************************************/ 

     }, 
     complete: function(){ hideLoadingImage(); } 
    }); 
}); 
+0

你的问题是什么? – j08691

+0

你有什么应该可以正常工作..如果show/hide之间的代码执行得非常快,它就不会非常有效。这是一个Ajax请求? –

+0

没有ajax请求。我添加了显示和隐藏功能,以便更清晰。 – amlane86

回答

-1

如果没有涉及ajax调用,您的代码看起来不错。否则,如果showLoadingImage是一个阿贾克斯调用你应该做

$("#button").click(
function(){ 
    showLoadingImage(); 

); 

var showLoadingImage = function(){ 
    $.ajax({ 
     success: function(){ 
     /************************************************************************** 
     * 
     * other actions to be performed after showLoadingImage() is finished 
     * 
     **************************************************************************/ 
     hideLoadingImage(); //only to be triggered after above actions are finished 
    }) 
} 
+0

感谢您的建议。没有ajax电话。我添加了显示和隐藏功能,使其更加清晰。 – amlane86

+0

@ amlane86我不明白那里没有什么工作,你能提供一个关于jsfiddle.net的例子吗? –

+0

我使用了你的建议,并在'$ .ajax()'中添加了'beforeSend'和'complete'并使其工作。我把它贴在上面给你看。感谢您的建议。 – amlane86

1

除非您在showLoading函数内进行异步调用,否则应该可以正常工作。如果没有,那么你需要在你的showLoadingImage中调用hideLoadingImage()。

+0

不正确,在不同的浏览器中测试,即chrome和safari,并且在所有其他代码运行之后,您将永远不会看到使用所给代码的图像更改 – SpYk3HH