我试图在jQuery的慢速操作过程中显示一个小的加载图像,但无法正确显示。 这是一张有数千行的大表格。当我检查“mostrarArticulosDeReferencia”复选框时,它会从这些行中删除“隐藏”类。这个操作需要几秒钟,我想给出一些反馈。 “加载”是用小gif动画jQuery在缓慢的操作过程中显示“加载”
这里一个div是完整的代码
jQuery(document).ready(function() {
jQuery("#mostrarArticulosDeReferencia").click(function(event){
if(jQuery("#mostrarArticulosDeReferencia").attr("checked")) {
jQuery("#loading").show(); //not showing
jQuery("#listadoArticulos tr.r").removeClass("hidden"); //slow operation
jQuery("#loading").hide();
} else {
jQuery("#loading").show(); //not showing
jQuery("#listadoArticulos tr.r").addClass("hidden"); //slow operation
jQuery("#loading").hide();
}
});
jQuery("#loading").hide();
});
看起来jQuery是“优化”的三线
jQuery("#loading").show(); //not showing
jQuery("#listadoArticulos tr.r").removeClass("hidden");
jQuery("#loading").hide();
而且从来没有显示加载DIV。 任何想法?
加成:有更快的方式做这种显示/隐藏的事情?发现切换方式比较慢。
更新: 我想这
jQuery("#mostrarArticulosDeReferencia").click(function(event){
if(jQuery("#mostrarArticulosDeReferencia").attr("checked")) {
jQuery("#loading").show(); //not showing
jQuery("#listadoArticulos tr.r").removeClass("hidden"); //slow operation
setTimeout("jQuery('#loading').hide()", 1000);
} else {
jQuery("#loading").show(); //not showing
jQuery("#listadoArticulos tr.r").addClass("hidden"); //slow operation
setTimeout("jQuery('#loading').hide()", 1000);
}
});
这就是我得到
- 点击复选框
- 没有在2/3秒(处理)
- 网页被更新 发生
- 加载div在瞬间显示
更新2: 我有一个工作解决方案。但为什么我要使用的setTimeout,使其工作超出了我......
jQuery("#mostrarArticulosDeReferencia").click(function(event){
if(jQuery("#mostrarArticulosDeReferencia").attr("checked")) {
jQuery("#loading").show();
setTimeout("jQuery('#listadoArticulos tr.r').removeClass('hidden');", 1);
setTimeout("jQuery('#loading').hide()", 1);
} else {
jQuery("#loading").show();
setTimeout("jQuery('#listadoArticulos tr.r').addClass('hidden');", 1);
setTimeout("jQuery('#loading').hide()", 1);
}
});
更新3: 刚刚发现的这种特殊情况下更好的解决方案。
//mostrar u ocultar articulos de referencia
$("#mostrarArticulosDeReferencia").click(function(event){
if($("#mostrarArticulosDeReferencia").attr("checked"))
$("tr.r").css({'display':'table-row'});
else
$("tr.r").css({'display':'none'});
});
使用的.css({“显示”:“无”})原来是WAY不是隐藏()快,因此无需加载动画...
这篇文章给我看光:show/hide performance。
你想在加载页面时运行它吗? $(document).ready()在所有内容都被关闭并加载时触发 – AutomatedTester 2009-08-10 06:42:59
不需要,我只在显示/隐藏操作期间需要这个。 刚刚粘贴了整个脚本 – 2009-08-10 06:46:05
只是一个想法,你有尝试过使用上下文吗?如果您在选择器语句中提供第二个参数,这可以帮助加速。 – 2009-08-10 08:21:23