【问题标题】:Images loaded via jQuery don't load after first page load通过 jQuery 加载的图像在第一页加载后不加载
【发布时间】:2017-12-24 04:03:51
【问题描述】:

我从一个文件夹加载所有 jpg/png 图像并将其附加到一个元素,然后当元素“准备好”时,我给它一些悬停效果等。但是,在我第一次加载页面后,如果我要刷新它,图像将不再加载。这是我用来加载图像的代码。

var folder = "images/";
$.ajax({
    url: folder,
    success: function (data) {
        $(data).find("a").attr("href", function (i, file) {
            if (file.match(/\.(jpe?g|png)$/)) {
                $("div#whatever").append("<img class='gallery' src='"+ folder + file +"'>");
            }
        });
    }
});

再次,它可以工作,但是一旦我刷新页面,它就不再加载它们,除非我在 Chrome 中清除缓存的图像。有没有办法强制刷新?这会是正确的方法吗?

【问题讨论】:

  • 你说的刷新,是指全页刷新还是部分页面刷新?
  • @Devesh 我的意思是 F5。所以我假设这是整页。

标签: jquery image


【解决方案1】:

尝试使用Math.floor((Math.random() * 1000) + 1),这是一个随机数,将其添加到您的图像源中。您可能需要在 ajax 中尝试cache: false

var folder = "images/";
var RandomNum = Math.floor((Math.random() * 1000) + 1);
$.ajax({
    url: folder,
    cache: false,  //<<<<<<<<<<<<<<<< here
    success: function (data) {
        $(data).find("a").attr("href", function (i, file) {
            if (file.match(/\.(jpe?g|png)$/)) {
                $("div#whatever").append("<img class='gallery' src='"+ folder + file +"?"+RandomNum +"'>");
            }
        });
    }
});

【讨论】:

  • 同样的事情发生了。
  • 我认为文件的随机数不应该是必需的,因为图像缓存是个好东西。 @Mohamed-优素福
  • @Devesh 你是对的,但我试图提出不止一种解决方案.. 问题对我来说并不存在,可能其中一个对他有用.. 谁知道? .. 谢谢 :-)
  • @Mohamed-Yousef 我也尝试了缓存:false,但只有在我清除缓存后它仍然有效。一旦我按 F5 它就会消失。我在 JS 文件的内部打开了代码,就在我的其余代码(包装在一个准备好的函数中)的上方。也许这有什么问题?图像加载不是在特殊函数中调用的,但由于我正在刷新(F5ing)页面,我假设它将重新加载脚本。我只是在清除缓存的图像后第一次不明白它是如何工作的,但之后就没有了。它不能在执行加载。
  • @Devesh 它实际上只是在一个 JS 文件中,周围什么都没有。我在 index.php 的头部调用脚本。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-15
  • 2014-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多