我正在網格上實現虛擬滾動。滾動/按需加載功能運行相當順利。但是,如果檢測到用戶快速滾動(定義爲長於450毫秒),則會在處理髮生時顯示帶加載gif的半透明div。將大量元素附加到頁面後發生滯後時間
我的問題是,加載完成後,附加完成後,我打電話來隱藏覆蓋期望看到更新的網格。相反,我有2-3秒的延遲,然後疊加隱藏和數據顯示。
問題:
A部分:爲什麼沒有在div仍停留在屏幕上,即使代碼隱藏談到了追加後的線......引起對意外2-3秒的等待沒有進展/加載指標給用戶?
B部分:可以做些什麼來確保疊加層保持可見狀態,直到添加到dom完成並呈現爲止?
執行的路線是這樣的:
CheckToFetch(id, $(gridScrollElm).scrollTop(), true);
ToggleOverlay(gridScrollElm, false);
正如你所看到聽到的,數據加載和渲染後的疊加理想應該隱藏。
在CheckToFetch
後面有一連串的方法調用,但我只會在發生追加的地方顯示最相關的部分。
AppendData: function (id, data, firstTime)
{
var gd = SGrid.GetGridData(id);
var rowClass = (gd["RecordCount"] + 1) % 2; //sets us on correct course for adding AlternatingRow classes
var grid = $('#' + id)
var tbody = grid.children('tbody');
var rowsToAdd = data["Records"];
for (var r = 0; r < rowsToAdd.length; r++)
{
var elmsQueue = new Array(); //used to do efficient string concat, especially for IE
elmsQueue.push('<tr>');
for (var c = 0; c < gd['Columns'].length; c++)
{
elmsQueue.push('<td align="');
elmsQueue.push(gd['Columns'][c]['DataAlign']);
elmsQueue.push('" ');
var id = rowsToAdd[r]["id"];
var cell = rowsToAdd[r]["cell"];
if (rowClass % 2 == 0)
{
elmsQueue.push('class="AlternatingRow">');
}
else
{
elmsQueue.push('>');
}
elmsQueue.push(cell[c]);
elmsQueue.push('</td>');
}
elmsQueue.push('</tr>');
tbody.append(elmsQueue.join(''));
rowClass++;
}
我真是太過分了......我以爲我已經把dom操作移到了外面......這就是當你得到超集中時會發生什麼。也非常感謝資源! –