2012-10-12 145 views
0

我有一個表格,它有15列和大約2000多條記錄。 現在我想隱藏/顯示最後5列。爲此,我使用以下jQuery語句。Jquery隱藏/顯示多個表格單元格的表格單元格

$("table.border-box td.disp").toggle(); 

具有「disp」類的td將隱藏/顯示錶格單元格。

但是這會導致瀏覽器出現以下停止腳本錯誤。

此頁面上的腳本可能很忙,或者它可能已停止響應。您可以立即停止腳本,也可以繼續查看腳本是否完成。

Script: http://localhost:8080/XXX/resources/js/jquery/jquery-1.6.4.js:4055 

如何優化這一點,也解決瀏覽器錯誤(瀏覽器:Mozilla Firefox瀏覽器:15.0)。

+0

你是在一個網站上顯示所有帖子? – intelis

+0

我建議你使用分頁方法來限制你的頁面記錄或限制記錄與lazyloading內容。 – Vimalnath

+0

你好,我已經解決了問題,而不是切換td,我已經切換CSS。 '$(「。disp」).css(「display」,「table-cell」);''和'$(「。disp」).css(「display」,「none」);'。它工作順利, –

回答

1

嘗試:

$("table.border-box").find(".disp").toggle(); 

而且緩存它使用它的其他時間,這樣的:

tds = $("table.border-box").find(".disp");//only do expensive operation once 

tds.toggle(); 
... 
... 
tds.toggle(); 

因爲這樣你將避免使用querySelectorAll()performance penalty它用於複雜選擇器,更好地嵌套簡單的像「.class」,所以jQuery在內部使用更多的性能getElementsByTagName()

顯然,如果這還不夠,你應該重構你的代碼,就像其他答案的建議。

0

前面已經提到,你應該在多個頁面拆分結果的其他球員。 但是,如果你不能這樣做,也許另一個但不是很好的方法是手動遍歷每一行並異步觸發切換事件。

1

你已經共享的代碼非常好。

我創建了一個JS小提琴測試:http://jsfiddle.net/3z7Ze/

確保您的記錄被載入你想顯示/隱藏列之前完全。並且當時沒有其他腳本在運行(這可能與顯示/隱藏功能相沖突)。