私のデータテーブルがロードされている間に表示する待機GIFを取得しようとしています。私は$(element).each()
ループを入力する直前に$(element).show()
と呼ぶだけで、すべての子グリッド(すなわち、DisplayInnerTable()
)をデータテーブルを使って表示します。待機中のGIFはJQueryを呼び出す直前に表示されません。
私は.each()
メソッドに問題を絞り込んだようです。 .each()
の中にあるすべてのコードを削除しても、待機中のGIFは表示されず、はい、私は.hide()
も削除します。 .each()
の直前にブレークポイントを置くと、待機中のGIFが表示されます。 .each()
が非常に速く起こっているように、タイミング問題と思われるwait.gif
の中にdiv
はレンダリングする時間がありません。そしてそのメモの中で、なぜJavascriptスレッドはhtml要素の操作を妨げますか?
私はいくつかの同様の記事を見つけましたが、どれもこの特定の問題に答えません。他の記事のほとんどはsetTimeout()
を使用することをお勧めします。私は可能な限りあらゆる方法でそれを試みました、運はありません。どんな助け、ヒント、手がかりも高く評価されます。ここで
は私のコードスニペットです:
$(document).ready(function()
{
$('#expand-all').on('click', function() {
$("#loader-wait-ani").show();
ExpandAllChildGrids();
});
function ExpandAllChildGrids()
{
var tr;
$('#result-table tbody tr').each(function (value, index) {
tr = $(this).closest('tr');
var row = outerTable.row(tr);
userId = row.cell(tr, 1).data();
DisplayInnerTable(userId, row, tr);
});
$('#expand-all-img').attr('src', '/Images/minus.gif');
$("#loader-wait-ani").hide();
}
});
は、ここに私のhtmlです:
<div style="width:100%; margin: 0 auto; text-align:center;">
<div id="loader-wait-ani" class="modal" style="display: none; z-index: 300;">
<img src="~/Images/waitbar.gif" alt="Pleae Wait..." width="250" height="20" />
</div>
</div>
あなたが複数のIDを持っていますか=「ローダー-WAIT-アニ "? – RIanGillis
'.show()'でコールバック関数を使ってみましたか? –
同じコード実行ルーチンで読み込み用GIFを表示したり非表示にしたりします。間にレンダリングは行われません。それはなぜ表示されないのですか? 'DisplayInnerTable'関数は内部で何をしますか? 'DisplayInnerTable'内にいくつかの非同期コードがありますか? –