1
我有一個MVC Web應用程序,顯示〜2000行「divs」,並且我想讓用戶能夠搜索並突出顯示關鍵字。我嘗試過使用jQuery插件,但性能非常糟糕,IE幾乎掛了!所以,我想知道這是否是最好的方法?如果我沒有獲得更快的版本,我寧願在服務器上「AJAX調用」,然後再重新渲染整個行 - 這樣至少用戶不會感覺瀏覽器被掛起!搜索並突出顯示 - 客戶端與服務器端?
有什麼建議嗎?
謝謝!
我有一個MVC Web應用程序,顯示〜2000行「divs」,並且我想讓用戶能夠搜索並突出顯示關鍵字。我嘗試過使用jQuery插件,但性能非常糟糕,IE幾乎掛了!所以,我想知道這是否是最好的方法?如果我沒有獲得更快的版本,我寧願在服務器上「AJAX調用」,然後再重新渲染整個行 - 這樣至少用戶不會感覺瀏覽器被掛起!搜索並突出顯示 - 客戶端與服務器端?
有什麼建議嗎?
謝謝!
你應該通過一個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毫秒在用戶停止輸入之後。我覺得這是一個舒適的時間間隔,但根據需要進行調整......或者直接將功能綁定到某個事件的某個事件上......任何最適合您界面的事件:)
對我來說,AJAX已經是一個很好的解決方案。 – Hanseh 2010-04-11 19:29:37
如果你的DOM樹很龐大,帶有AJAX調用的服務器端將會工作得最好,對於小文檔,你可以隨時去客戶端,因爲它不那麼麻煩。 – 2010-04-11 19:54:57
好吧,是的!它超大!我也需要緩存。 – OneDeveloper 2010-04-11 19:59:32