У меня нет полного технического объяснения, но я испытал это раньше.Вероятно, это связано с тем, как работает поток управления JavaScript.Предположительно, поскольку Javascript является однопоточным, DOM не обновляется до тех пор, пока синхронная часть вашей операции не будет завершена.
Я также обнаружил, что анимированный GIF может отображаться, но не анимироваться в аналогичных обстоятельствах.
Скорее всего, можно сделать так, чтобы гиф показывался так:
$('#collapseExpandProgress').show();
window.setTimeout(function() {
$(".treeclick", "#treegrid").each(function () {
if ($(this).hasClass("tree-plus")) {
$(this).trigger("click");
}
$('#collapseExpandProgress').hide();
},50); // just some low number
Однако я подозреваю, что он не будет анимирован по той же причине, по которой он не был показан, возможно, в зависимости отбраузер.