等待jquery第一个更改事件完成

wait for jquery first change event to complete?

本文关键字:事件 jquery 第一个 等待      更新时间:2023-09-26

我有两个选择框要更改。第二个依赖于第一个。这就是我目前所拥有的:

$.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"); 

第一变化事件起作用,但它立即触发第二变化事件,并且第一变化事件的值还不存在。

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

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

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

您可以尝试将其包装在setTimeout()中,使用任意低的时间或根本没有时间。

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

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

不输入时间,或者输入0的时间,本质上会告诉它在当前进程完成后立即调用此匿名函数。