我试图在加载数据表时显示等待的gif。我只是在进入我的$(element).each()
循环之前调用$(element).show()
,该循环显示使用数据表的所有子网格(即DisplayInnerTable()
)。在调用JQuery之前,不会显示等待的gif。每个
看来我已经将问题缩小到.each()
方法。如果我删除.each()
里面的所有代码,那么wait gif仍然不会显示,并且是的,我还删除了.hide()
。如果我在.each()
之前放置了一个中断点,则会显示wait 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 - ani“? – RIanGillis
你有没有试过在'.show()'上使用回调函数? –
您在相同的代码执行例程中显示并隐藏加载gif。中间不会出现渲染。这就是为什么它不会出现。 DisplayInnerTable函数在内部做了什么? DisplayInnerTable中是否有一些填充单元格的异步代码? –