不知道'范围'是否真的是正确的术语,但我想知道是否有人可以解释为什么这不像我期望的那样工作。
https://jsfiddle.net/jmillsy/uucf5xmb/1/
如果我移动
$('.myclass option').each(function() {
$('#output').append($(this).val());
});
在always()块内,它的工作方式与我预期的一样。
答案 0 :(得分:1)
像这样使用它会起作用:
$.ajax({
type: "POST",
url: "localhost:8080/404",
dataType: 'json',
data: {}
}).always(function(data) {
$('.myclass').append(
"<option value='op1'>Option 1</option>"
);
$('.myclass').append(
"<option value='op2'>Option 2</option>"
);
}).complete(function() {
$('.myclass option').each(function() {
$('#output').append($(this).val());
});
});
问题是您的代码没有按照您的想法运行,当您执行此操作时,选项尚未呈现
<强>更新强>
也可以使用async的其他版本,是的:是的。)
答案 1 :(得分:0)
问题是您的Ajax调用是异步的。这意味着调用后的代码会在调用后立即执行,因此在您的选择中有任何选项之前。
您可以通过在ajax选项中将选项async
指定为false
来更改此设置。这样,将附加option
,然后将执行在output
块中列出它们的代码。