2013-02-16 36 views
0

我正在使用複選框來顯示或隱藏jqGrid中的列,並且由於我有許多行,每個行的單元格中包含許多值,因此複選框在檢查時需要很長時間才能完成檢查它。複選框檢查速度慢

我想要複選框立即檢查,然後做耗時的jqGrid操作。例如,

$('input[type="checkbox"]').click(function(e) { 
    // First render/unrender the checkmark  
    // Next do some very time-consuming jqGrid operations 
} 

我該如何做到這一點?就目前而言,它首先執行jqGrid調用,並且只在最後檢查checkox。完成兩秒鐘才能檢查複選框!

+0

你能解釋一下你的意思是哪個複選框嗎?它是[columnChooser](http://www.trirand.com/jqgridwiki/doku.php?id=wiki:jquery_ui_methods#column_chooser)的複選框,或者您使用其他自定義界面,您只需調用'showCol'或'hideCol' ? – Oleg 2013-02-16 22:43:22

+0

嗨奧列格。我使用一個自定義接口,我稱之爲showCol和hideCol。即使在單個colName上使用showCol時,也會出現問題。我使用jqGrid 4.4.1,所以它有你的單元格[我] css優化。 – ktm5124 2013-02-16 22:47:45

回答

3

嘗試把耗時代碼超時內:

// immediate stuff here 
setTimeout(function() { 
    // time-consuming stuff here 
},1); 

理想情況下,你會希望把他們費時的東西,在網絡工作者,以免凍結的UI。

1

您可以在頁面和腳本中進行優化。

  1. <body>標籤結束前把你的腳本。
  2. 使用TOLS提高性能:我可以推薦這個最好的工具就是dynaTrace AJAX Edition,它是IE分析器(通常是最慢的JS性能,因此實際上是開始優化良好的實驗環境)。 它會給你一個完整的分解,顯示你重複的方法調用,調用樹和你的CPU週期去。 Check out their tutorials on usage/features即可開始。
  3. Improving jQuery Performance with Large Data Sets主題包括:
  1. 使用JavaScript原生的()循環,而不是jQuery的$。每()輔助
    功能。
  2. 請勿在循環中將元素附加到DOM中。
  3. 如果您有很多要插入DOM的元素,請使用父元素將它們包圍
    以獲得更好的 性能。
  4. 不要使用字符串連接,而應該使用數組的join()方法來處理 很長的字符串。
  5. 使用setTimeout()函數爲您的長列表循環和級聯
    函數。

  6. 縮減大小腳本

希望這些將足以獲得更好的性能

0

我相信你可以渲染/未呈現一個.click()功能對號,然後做你的在另一個.click()中的jqGrid操作。即

$('#selector').click(
    function(){//rendering stuff} 
).click(
    function(){//computational stuff} 
); 
+0

但是如何?我花了整整一天的時間來弄清楚這一點。 – ktm5124 2013-02-16 22:43:36

+0

我相信這是正確的,儘管第二個'.click'可能需要是'.done' – gilbertbw 2013-02-16 23:01:56