2011-03-29 58 views
1

我有一個包含數千行信息的表格的頁面。強制頁面重繪中功能

當用戶點擊一個複選框時,大量的行可能會消失,導致普通的瀏覽器掛幾秒鐘,但在我的原始實現可能導致IE決定它想掛60秒(> _>)。

JS Fiddle

<html> 
<head> 
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" type="text/javascript"></script> 
    <style type='text/css'> 
    body{ 
     font-family: "Arial", sans-serif; 
     letter-spacing: 0px; 
     font-size: 7pt; 
    } 

    table{ 
     border-width: 1px; 
     border-color: #000000; 
     border-collapse: collapse; 
    } 

    .tr_1{ 
     background: #efefef; 
    } 

    .tr_2{ 
     background: #ffffff; 
    } 
    </style> 

    <script type='text/javascript'> 
    $(function(){ 
     var $tr_1 = $(".tr_1"), 
      $loading = $("#loading"); 

     $("#checky").click(function(e) { 
     $loading.css('display', 'block'); 

     if(this.checked){ 
      $tr_1.css('display', 'none'); 
     }else{ 
      $tr_1.css('display', 'table-row'); 
     } 

     $loading.css('display', 'none'); 
     }); 
    }); 
    </script> 
</head> 
<body> 
    <div> 
    <input type='checkbox' id='checky'>Click Here! 
    </div> 
    <div id='loading' style='display: none'> 
    <h2>Hey! We're loading!</h2> 
    </div> 
    <table> 
    <?php 
     for ($i=0; $i<=5000; $i++){ 
     echo "<tr class='tr_".(($i%2)+1)."'><td>This is a row of data<td>Number $i\n"; 
     } 
    ?> 
    </table> 
</body> 
</html> 

理想情況下,我想要做的就是有loading_box顯示給用戶某種形式的什麼目前發生的瀏覽器凍結之前的想法。

但是,就目前而言,它不會嘗試使load_box可見,直到完成修改其餘樣式爲止(因此,它實際上顯示並消失而沒有顯示在屏幕上)。

是否有可能之一:

  1. 力的頁面顯示裝載盒將其與行
  2. 有一些更有效的方式來獲得行去顯示的隱藏繼續之前:沒有人能阻止潛在的頁面服用年齡

與感謝

回答

2

你可以「延遲」你的重代碼的執行,直到你certa在加載-DIV中所示,通過例如使用的setTimeout JavaScript方法:

show div; setTimeout(doStuff, 100); 

上述僞代碼將被延時100ms「dostuff」的執行..少很可能做..

編輯:落實到你的榜樣

$("#loading").css('display', 'block'); 
setTimeout(function(){ 
    if ($(".tr_1").css('display')=='none'){ 
    $(".tr_1").css('display', 'table-row'); 
    }else{ 
    $(".tr_1").css('display', 'none'); 
    } 
    $("#loading").css('display', 'none'); 
}, 100); 
+0

謝謝,這工作得很好,在我的正常執行=] 乾杯! – Doug 2011-03-29 08:19:28