如何判断是否在JQuery中加载或缓存了图像?

CpI*_*ILL 6 jquery

似乎.load()函数在之前已缓存图像时不会触发.因此,如果您想在加载并显示另一个图像(即放大镜)之前确保已加载一个图像,则无法执行以下操作:

$(img_to_load_first)
    .load(
        $(img_to_load_last)
            .src("2nd.png");
    )
    .src("1st.png");
Run Code Online (Sandbox Code Playgroud)

那么如何确保JQuery中的加载顺序呢?

spa*_*ey0 15

您需要做的是有选择地处理您的加载绑定.您可以通过测试Image对象属性来验证负载complete.

例如:

$('.load_selector').each(function(){

    if (!this.complete) {
        $(this).load(function(){
            // handle image load event binding here
        });
    } else {
        // handle image already loaded case
    }

});
Run Code Online (Sandbox Code Playgroud)

注意,上面this(单独使用)是指对jQuery提供的图像对象的DOM引用.

  • 广泛支持,请参阅此处的浏览器矩阵:http://www.w3schools.com/jsref/prop_img_complete.asp - 要记住的一件事是,您可能需要在检查完整属性之前测试有效的 src 属性。许多浏览器会对空 src 返回 true (例如:空源是完整的,因为它没有加载/不会加载) (2认同)