等待jquery第一次更改事件完成?

时间:2014-04-15 18:18:00

标签: javascript jquery

我有两个选择框,我试图改变。第二个取决于第一个。这就是我到目前为止所做的:

$.post('functions.php', {f: 'getdata', param1: parmvalue}, function(data) {

    if (data.platform_seen) {
        $("select#first_box").val(data.first).change();

        if (data.target_release){
            $("select#second_box").val(data.second).change();
        }
    }

}, "json"); 

第一个更改事件有效,但它会立即触发第二个更改事件,并且第一个更改事件中的值尚未显示。

如何在触发第二个更改事件之前等待第一个更改事件?

2 个答案:

答案 0 :(得分:2)

您可以使用回调嵌套它们 -

if (data.platform_seen) {
    $("select#first_box").val(data.first).change(function() {
        // starts after first change function completes
        if (data.target_release){
            $("select#second_box").val(data.second).change();
        }
    });
}

答案 1 :(得分:0)

您可以尝试将其包裹在setTimeout()中,任意时间很短或根本没有时间。

setTimeout(function () {
    if (data.target_release) {
        $("select#second_box").val(data.second).change();
    }
});

setTimeout在执行之前等待当前进程完成。因此,在其中调用匿名函数将等待在其中运行代码之前发生第一次更改。

没有花时间,或者花费0的时间基本上会告诉它在当前进程完成后立即调用此匿名函数。