2010-04-11 101 views
1

我有一個MVC Web應用程序,顯示〜2000行「divs」,並且我想讓用戶能夠搜索並突出顯示關鍵字。我嘗試過使用jQuery插件,但性能非常糟糕,IE幾乎掛了!所以,我想知道這是否是最好的方法?如果我沒有獲得更快的版本,我寧願在服務器上「AJAX調用」,然後再重新渲染整個行 - 這樣至少用戶不會感覺瀏覽器被掛起!搜索並突出顯示 - 客戶端與服務器端?

有什麼建議嗎?

謝謝!

+0

對我來說,AJAX已經是一個很好的解決方案。 – Hanseh 2010-04-11 19:29:37

+0

如果你的DOM樹很龐大,帶有AJAX調用的服務器端將會工作得最好,對於小文檔,你可以隨時去客戶端,因爲它不那麼麻煩。 – 2010-04-11 19:54:57

+0

好吧,是的!它超大!我也需要緩存。 – OneDeveloper 2010-04-11 19:59:32

回答

2

你應該通過一個AJAX調用服務器做到這一點,提供了高亮關鍵字字符串,返回的div,像這樣:

$("#content").load('page.aspx', {'keywords':$('#searchBox').val()}); 

在這種方法您的服務器將只返回的div(與突出!)基於通過的keywords字符串,並且這將使用它們填充<div id="content">

客戶端上的突出顯示便宜,但尋找什麼突出顯示在JavaScript中是非常昂貴的,這是很多DOM爬行繼續。通過服務器上的超時這樣做,這將是最好的方法,這樣他們打字每一次擊鍵,這樣的事情不會做:

$('#searchBox').unbind('keyup').keyup(function() { 
    clearTimeout($.data(this, 'timer')); 
    var wait = setTimeout(function() { 
    $("#content").load('page.aspx', {'keywords':$('#searchBox').val()}); 
    }, 150); 
    $(this).data('timer', wait); 
}); 

這將執行服務器回調,但只有150毫秒在用戶停止輸入之後。我覺得這是一個舒適的時間間隔,但根據需要進行調整......或者直接將功能綁定到某個事件的某個事件上......任何最適合您界面的事件:)