0

我有一个无序列表,我以编程方式填充了一些 li 项目:

 function addNewElement(elem) {

     var li = $("<li></li>");

     li.prop("class", "ui-state-default");
     li.prop("id", elem.Alias);
     li.text(elem.Name);

     var newItem = '<div id="' + elem.Alias + '-Status" class="elementStatus"><div class="image"><img id="' + elem.Alias + '-StatusImg" src="@Url.Content("~/images/ongoing.gif")"></div><div id="' + elem.Alias + '-StatusTxt" class="text">Waiting...</div></div>';
     console.log("new item added: " + newItem);
     li.append(newItem);
     li.appendTo($(getSortableContainer(elem.Alias)));
 };

函数 getSortableContainer 是一个无序列表(ul item)。

在执行长时间任务期间,可以看到一个图像,并且在图像下方显示文本“Waiting”。得到长任务的结果后,我使用以下命令更新 div (src 属性)中上述 img 的图像:

function setImg(elemId) {
    $('#' + elemId + '-StatusImg').attr("src", '@Url.Content("~/images/MyImage.gif")');
    $('#' + elemId + '-StatusTxt').text("Done!");
}

问题是当我使用上述功能用新图像更新图像时,图像不会立即更新,它会在几秒钟后更新,超过 15 秒。

如何强制图像立即更新?

2013.10.24 更新

我正在使用以下几行来更新图像以防止缓存:

var d = new Date();
$('#' + elemId + '-StatusImg').prop("src", '@Url.Content("~/images/MyImage.gif")' + '#' + d.getTime());

使用它,第一次启动我的网络应用程序(通过之前删除所有 Internet Explorer 历史记录、cookie 等)时,图像会继续延迟显示。下一次,如果我再次启动我的网络应用程序,而不删除 Internet Explorer 历史记录,图像就会立即显示,所以......发生了什么?

4

0 回答 0