我有两个选择框,我试图改变。第二个取决于第一个。这就是我到目前为止所做的:
$.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");
第一个更改事件有效,但它会立即触发第二个更改事件,并且第一个更改事件中的值尚未显示。
如何在触发第二个更改事件之前等待第一个更改事件?
答案 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
的时间基本上会告诉它在当前进程完成后立即调用此匿名函数。