如何在按下按钮时按顺序运行jQuery函数?

时间:2012-01-19 15:38:56

标签: javascript jquery

我有一个.click()函数,可以在单击按钮时执行某些操作。我希望它显示加载图像,运行一些“东西”,然后在“东西”完成时删除加载图像。

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(); }
    });
});

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:-1)

如果没有涉及ajax调用,则代码看起来很好。否则,如果showLoadingImage是一个ajax调用,你应该做

$("#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
    })
}