如何在 ajax 调用之前和之后更改 css 属性(如光标:等待或背景)
How to change css property (like cursor:wait, or background) before AND after ajax calls?
我在这段代码中遇到了问题,我试图在函数工作时显示红色背景,然后(只有这样)我将背景更改为绿色。
当以下警报未被评论时,我可以看到一段时间的红色背景,然后是绿色(这就是我想要的)。
但是当我评论该警报时,似乎从未设置过红色背景,一旦 processData 完成,背景就会正确设置为绿色。
有人能为我解开这个谜团吗?谢谢!
function beforeProcess(params){
$('#result').css('background','red');
alert('now i start waiting, while background is red');
$.when(processData(params)).done(
$('#result').css('background','green')
);
}
function process(params){
//This function takes some time, and it makes (indirectly) some synchronous ajax calls (async:false)
}
只有在函数完成执行后,视图才会更新。这可以使用 setTimeout 来完成http://jsfiddle.net/YEVHv/4/
$('#result').css('background', 'red');
//alert('now i start waiting, while background is red');
setTimeout(function () {
$.when(process("")).done(
$('#result').css('background', 'green'));
}, 0);
function process(params) {
for (var i = 0; i < 10000; i++) {
console.log("hello");
}
}
希望有帮助
我的猜测是你的函数"进程"返回得很快......请记住,JS中的每个函数调用都是异步执行的。如果要在处理时显示进度或显示某些状态(红色),则必须确保函数进程在所有子函数完成后返回。现在,我只能考虑使用标准回调。
$.when 在与延迟对象一起使用时很有用。如果您使用的函数不是延迟对象,则立即执行"done"。请看下面从"http://api.jquery.com/jQuery.when/"摘录:"如果将单个参数传递给jQuery.when,并且它不是延迟或承诺,它将被视为已解决的延迟,并且任何附加的doneCallbacks将立即执行。
希望这有帮助
相关文章:
- RegEx删除空属性?例如,如果(class=“”||class=“”)移除;否则就下课
- 全局变量和全局对象的属性之间有什么区别吗
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- 如何在Bootstrap Modal中为动态点击生成的变量设置jade属性
- 序列化数据属性中对象的最可靠方法
- 分析高度属性时出现意外值{{specs.height}}.index.html
- TypeError:无法读取属性'推'未定义的JavaScript
- 同样,同样的错误'ahorcado.js:26未捕获类型错误:无法读取属性'beginPath'
- AngularJS-使用'true'属性
- 可以't使用JavaScript获取width属性
- 未捕获的TypeError无法读取未定义的属性socialsharing
- 如何使用javascript获取嵌套对象中所有子对象的单个属性
- 按属性更改光标
- GWT:如何从当前光标位置或所选文本中获取css样式的属性
- 如何在chrome浏览器中的输入字段中使用只读属性时启用光标移动
- 如何在 ajax 调用之前和之后更改 css 属性(如光标:等待或背景)
- 将光标聚焦在 HTML 上创建,然后在 Lightswitch 2013 中的属性字段之间移动光标
- 将光标属性重置为“抓取”;不工作在Chrome浏览器
- jQuery不设置CSS光标属性
- 如何在将光标放置在HTML元素上时获得元素属性