我得到了预定义的值,我必须将其插入到两个选择中:
<div id="wrapper">
<select id="first">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<select id="second"></select>
</div>
里面的选项#second
取决于#first
. 此选项通过 ajax 加载:
$('#first').change( function() {
$.ajax({
url: "giveMeValues.phpOrWhatever"
}).done(function() {
// just simulating data from ajax call
$('#second').append(
'<option value="a">a</option>'+
'<option value="b">b</option>'+
'<option value="c">c</option>'
);
});
});
问题是,我可以设置加载 ajax 数据#second
后的值。所以下面的代码当然不会工作:
$('#first').val('2').change();
$('#second').val('b').change();
所以我尝试使用.promise()
等待处理程序内部的 ajax 调用change
完成:
$('#first').val('2').change();
$('#wrapper').promise().then( function() {
$('#second').val('b');
console.log('setting value...');
});
但它不起作用。我的问题是:我怎么能等到 ajax 调用结束,然后设置#second
值?
在这里你可以解决这个问题:http: //jsfiddle.net/W2nVd/
谢谢你的时间。