jQuery在绑定.load()事件之前检查图像是否已加载

jQuery在绑定.load()事件之前检查图像是否已加载,jquery,image,events,filter,load,Jquery,Image,Events,Filter,Load,我有一个用于jQuery的coverflow插件,它可以根据一系列图像中最高的图像进行调整 目前,它对每个图像使用.load()绑定,并在计数器指示已加载所有图像后调整插件。不过,有人告诉我,这在所有浏览器上都不可靠 通常,这些图像中的大多数已经加载到浏览器缓存中,因此触发的.load()绑定远远超出了需要 为了减少开销,我希望通过仅对尚未加载的图像使用.load()绑定,尽可能减少.load()绑定的数量 如何区分已加载的图像和尚未加载的图像?在绑定事件之前,请检查图像的complete属性。

我有一个用于jQuery的coverflow插件,它可以根据一系列图像中最高的图像进行调整

目前,它对每个图像使用
.load()
绑定,并在计数器指示已加载所有图像后调整插件。不过,有人告诉我,这在所有浏览器上都不可靠

通常,这些图像中的大多数已经加载到浏览器缓存中,因此触发的
.load()
绑定远远超出了需要

为了减少开销,我希望通过仅对尚未加载的图像使用
.load()
绑定,尽可能减少
.load()
绑定的数量


如何区分已加载的图像和尚未加载的图像?

在绑定事件之前,请检查图像的
complete
属性。例如:

var img = $('.someImage');
if (img.prop('complete')) {
  // already loaded
} else {
  img.load(function(){
    // now it has loaded
  });
}

如何使用localstorage,跟踪任何服务器更新(新映像或其他内容,并使用一些逻辑服务器端)以检查旧映像是否已在缓存中?不管怎样,请看:不完全重复;另一个问题假设这个问题的答案是已知的。另一个答案与您在Guffa答案中的问答评论中使用的逻辑完全相同(即使是处理
complete
属性可能存在问题的旧浏览器)。对不起,如果我错过了一些东西,但很确定它是重复的,否则,我的坏处是;如果您正在寻找一种方法来查看图像是否已加载,而您不知道
是否已完成
,您会发现另一个问题吗?我没有。这是一个很好的观点,即使我没有在谷歌中使用完全特定的词:“检查图像缓存javascript”。将问题标记为重复并不意味着问题是无用的或不好的
img.prop('complete')
将只对第一个匹配的元素起作用。我最终得到了类似
$('img').filter(function(){return!$(this.prop('complete');}.load(…),它似乎工作得很好。节省了大约三分之一的重复计算。@a.Wolff:是的,代码只处理一个图像,我希望答案不会给人留下任何其他印象。@Guffa我总是有这样的“印象”,当我看到一个类选择器时,我期望不止一个元素,真的很糟糕:)