jQuery:控制事件的顺序

时间:2009-12-23 16:37:58

标签: jquery ajax

我遇到了一些jQuery代码问题。

使用$ .each我循环几个值并调用一些PHP代码。在$ .each循环结束后,我想加载一个包含特定内容的div。我已经尝试在$ .each语句之后加载div,但仍然首先执行load语句,显示错误的值。当我把这个负载放在$ .each中时它会起作用,虽然它在每次迭代后加载而不是在最后加载。有什么想法吗?

以下是我的代码的相关部分:

$.each(steps, function(n,step){
            $.post("utility.php", {
                utility: "getStepValue",
                step: step
            },
            function(data) {
                // offset clock
                var step_value = data;
                $.post("utility.php", {
                    utility: "offsetClock",
                    step_value: step_value
                },
                function(data){
                    // when load statement inserted here, it works fine
                });
            });
        }
    });

    // this statement finishes before the $.each, showing the wrong value
    $("#clock").load("utility.php", {
        utility: "displayClock"
    });

1 个答案:

答案 0 :(得分:1)

获取steps的数量。然后,只有当前索引与步数相同时,才在循环中的第二个回调中执行$("#clock").load("utility.php" ... - 1.这样的事情:

var count = steps.length;
$.each(steps, function(n,step){
            $.post("utility.php", {
                utility: "getStepValue",
                step: step
            },
            function(data) {
                // offset clock
                var step_value = data;
                $.post("utility.php", {
                    utility: "offsetClock",
                    step_value: step_value
                },
                function(data){
                  if(n == count - 1){
                    $("#clock").load("utility.php", {
                      utility: "displayClock"
                    });
                  }
                });
            });
        }
    });