我有一个ajax调用,它返回一个字符串并创建一个带有字符串的<span>
元素。然后我想为新创建的span
添加一些类。但是由于AJAX的异步特性,在AJAX调用之前执行添加类的函数。
那么,我应该使用延期承诺吗?怎么样?
简单的小代码位于 jsFiddle 。 < / p>
预期结果: 点击按钮获取响应,并将类添加到span
答案 0 :(得分:1)
您希望将回调函数作为参数传递给get()
:
$('button:eq(0)').click(function () {
get(function () {
$('span').addClass('red');
});
});
在get()
:
function get(callback) {
//more code
.done(function (result) {
//even more code
callback.call();
});
};
被拒绝的对象替代方法是从$.getJSON()
返回get()
承诺并在其.done
回调中添加类:
function get() {
return $.getJSON( // more code
}
$('button:eq(0)').click(function () {
get().done(function () {
$('span').addClass('red');
});
});
答案 1 :(得分:0)
在这里,我也修复了你的班级css。 你说:
span.red {color:green}
并且是一个错误:)
已更改为
span.red {color:red}
记住!
Ajax是一个异步调用,所以你想要执行 ONCE COMPLETED 请求的代码, CAN NOT 在调用之后,但它必须只在回调中写入一旦完成就被调用。