我有一點點的javascript/jquery,在搜索框中按「enter」會遍歷所有錶行,然後隱藏那些不適用/不包含字符串的行。然而,這個過程對於速度較慢的系統是極其重要的,所以我決定實現一個小的加載gif,這樣即使瀏覽器已經凍結,人們也知道發生了一些事情。但問題是,圖像從不出現。我假設這是因爲瀏覽器凍結。所以,現在我的問題。我怎麼能讓循環更快,使用更少的計算能力,並顯示gif?非常感謝防止javascript搜索功能減慢瀏覽器
var $rows = $('tbody tr.visall');
$('#search').keydown(function(e) {
if (e.keyCode == 13){
$('.load').show();
var val = $.trim($(this).val()).replace(/ +/g, ' ').toLowerCase();
$rows.show().filter(function() {
var text = $(this).text().replace(/\s+/g, ' ').toLowerCase();
return !~text.indexOf(val);
}).hide();
};
$('.load').hide();
});
編輯:此代碼經過約9000-10000 tr元素。
也許值得加入的jsfiddle來解決這個問題,很難進行任何嘗試沒有數據。我會做的一個改變是不使用.hide()和.show()。相反,添加和刪除「隱藏」類並處理任何淡入/淡出CSS過渡。這應該將動畫的開銷推到GPU上。 – PeteAUK
@PeteAUK我不能很快掀起一個例子,因爲代碼必須經過數千行數據。 – Dragongeek
我的想法是......在瀏覽器上實現這一點非常困難...我的建議是分頁或者更困難的方法是過濾僅在視口上可用/看到的「tr」(這很難做到) – Kushal