当JS循环结束时,jQuery hide()
jQuery hide() when JS loop finishes
我有这个JS循环:
for (var i = 0; i < jsArr.length; ++i) {
$.post("checkdata.php", { names: jsArr[i], platforms: "1" })
.done(function(data) {
eval(data);
});
}
data
是一些jQuery CSS操作。我在"loadingImg"div类下有一个加载图像,它在页面加载时显示。checkdata.php
对照API检查names
https://www.xboxleaders.com/
在循环和jQuery .done
过程完成后,实现$('#loadingImg').hide();
(隐藏图像)的最佳方法是什么?
我曾想过在循环之后添加它,但这并不能保证checkdata
已经完成。
$when可用于组合延迟,并将在所有延迟都得到解析时进行解析。
var defs = [];
for (var i = 0; i < jsArr.length; ++i) {
defs.unshift($.post("checkdata.php", { names: jsArr[i], platforms: "1" }));
defs[0].done(function(data) {
eval(data);
});
}
$.when.apply($, defs).done(function() {
$('#loadingImg').hide();
});
使用计数器:
var counter = 0;
for (var i = 0; i < jsArr.length; ++i) {
$.post("checkdata.php", { names: jsArr[i], platforms: "1" })
.done(function(data) {
counter++;
eval(data);
if(counter == jsArr.length){
$('#loadingImg').hide();
}
});
}
您最好使用瀑布
这个问题会很有帮助。
一个解决方案是创建第二个数组,该数组的元素数与jsArr相同。在每个.done上,将第二个数组的相应索引设置为true。然后,在每次调用.done时,检查第二个数组的所有值是否为true,如果为true,则隐藏。(或者,您可以将一个新值推入第二个数组,并检查数组的长度是否相同,以使隐藏生效)
doneChecks = [];
for (var i = 0; i < jsArr.length; ++i) {
$.post("checkdata.php", { names: jsArr[i], platforms: "1" })
.done(function(data) {
doneChecks.push(true);
eval(data);
if (doneChecks.length == jsArr.length)
$('#loadingImg').hide();
});
}
相关文章:
- JQuery hide()在show()之后不起作用,反之亦然
- jQuery.hide()不适用于我的数组
- Jquery.hide()只在第一次点击按钮时触发html
- Jquery.hide()和.show()在firefox上运行速度较慢,但在chrome上运行良好
- jQuery hide() 或 fadeOut() 不起作用
- jQuery .hide 方法在 td 上不起作用
- JQuery .hide() 在 FireFox 中不起作用
- 如何设置 jQuery hide(),添加类和删除类以正常运行
- jQuery hide cookie
- jQuery hide(), show() or html()
- jQuery.hide()函数"闪烁”;
- 将jQuery.hide()与CSS媒体查询一起用于基于屏幕分辨率的菜单切换
- jquery.hide()函数-隐藏手机,显示桌面
- jQuery hide/show 不起作用,不像 JS 函数
- 当JS循环结束时,jQuery hide()
- jQuery hide() not working (IE9)
- jQuery.hide()出现奇怪问题
- Jquery .hide在这种情况下不起作用
- jQuery hide & Show 太不分青红皂白了,需要更高的精度
- 如果jQuery.hide()在Deferred回调中被调用,Callback不会触发