我試圖在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