Ich versuche, eine Warte gif anzuzeigen, während meine Daten geladen werden. Ich rufe einfach $(element).show()
kurz vor dem Eingeben meiner $(element).each()
Schleife, die alle untergeordneten Gitter anzeigt (dh. DisplayInnerTable()
) mit Datenträgern.Warte GIF wird nicht angezeigt, bevor JQuery aufgerufen wird.
Es scheint, ich habe das Problem auf die .each()
Methode eingegrenzt. Wenn ich den ganzen Code innerhalb der .each()
entferne, wird das Wartegif immer noch nicht angezeigt, und ja, ich entferne auch die . Wenn ich kurz vor der .each()
einen Haltepunkt einstelle, wird das Warte-GIF angezeigt. Scheint ein Timing-Problem zu sein, wie die .each()
passiert so schnell die wait.gif
innerhalb der div
hat keine Zeit zu rendern. Und warum sollte Javascript Thread die Manipulation von HTML-Elementen verhindern?
Ich habe einige ähnliche Artikel gefunden, aber keiner von ihnen beantwortet dieses spezielle Problem. Die meisten anderen Artikel empfehlen die Verwendung setTimeout()
. Nun, ich habe das auf jede mögliche Weise versucht, kein Glück. Jede Hilfe, Hinweise oder Hinweise werden sehr geschätzt.
Hier ist mein Code-Schnipsel:
$(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();
}
});
Hier ist mein 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>
Haben Sie mehrere id haben = "loader-WAIT ani "? – RIanGillis
Haben Sie versucht, eine Callback-Funktion für '.show()' zu verwenden? –
Sie zeigen das Lade-GIF in derselben Code-Ausführungsroutine an und blenden es aus. Dazwischen findet kein Rendering statt. Deshalb wird es nicht angezeigt. Was macht die 'DisplayInnerTable' Funktion intern? Gibt es Async-Code innerhalb der 'DisplayInnerTable', der die Zellen auffüllt? –