我有一个包含大约 260 行的数据表。这些行中的每一行都由诸如 parentHeaderName 之类的属性标识。单击该表的标题时,我有一些 jQuery 可以将标题短暂更改为 ajaxload.gif 图像,如下所示
$('#Header').html('<img src="images/ajaxload.gif"');
然后我通过调用切换所有 260 行
$([parentHeaderName=something]).toggle();
不幸的是,我无法让将标头更改为 ajaxload.gif 的代码部分正常运行。就好像该语句和切换语句都在同时运行。这意味着,用户永远不会看到 ajaxload.gif。我可以让图像显示的唯一方法是在两个语句之间放置一个 alert('...') 消息。显然,这不是作为解决方案所期望的。我试过使用 delay() 和 setTimeout 无济于事。我想我需要的是某种在 jQuery 或 javascript 中等效的 DoEvents,它可以让图像在切换执行之前显示。
有任何想法吗?
谢谢,克里斯
更新:感谢反馈的人。这是实际的代码:
$('.sixdegreestypeheader').click(function() {
var headerName = $(this).attr("headername");
var jq = "[headername$=" + headerName + "]";
var jq2 = "[parentheadername$=" + headerName + "]";
var originalTextValue = $(jq).text();
var originalHTMLValue = $(jq).html();
if (originalHTMLValue.indexOf("collapse") == -1) {
$(jq).html('<img src="images/collapse.gif" /> ' + originalTextValue);
}
else {
$(jq).html('<img src="images/expand.gif" /> ' + originalTextValue);
}
// alert('break here to act as a DoEvents.') // this forces the image change... but I don't want to have to use an alert to force this
$(jq2).toggle();
return false;
});
(此代码实际上将标头更改为 expand.gif 或 collapse.gif,而不是 ajaxload.gif。)
我确实尝试了延迟建议
$(jq2).delay(500).toggle();
但它没有任何帮助。当需要切换的行数很少时——比如说,最多 20 行——没有问题。但在某些情况下,我需要隐藏一堆(例如 260),就好像浏览器需要几秒钟才能通过 DOM 来完成所有隐藏的事情。这就是我最初希望使用 ajaxload.gif 图像的原因。
谢谢,克里斯