javascript - 使用 ajax + jquery 的 after() 函数,现在等待图像加载

标签 javascript jquery ajax jquery-after

您好,我正在使用 ajax 和 json 进行无限滚动,然后我创建了一个 html 字符串以添加到我的网页并使用 jQuery 的 after() 函数调用它。

  $('.product-panel:last').after(productHTML);

现在我需要等待我的新 productHTML 字符串中的所有图像加载,然后调用我创建的另一个 javascript 函数来进行一些格式化。

我试过

         $('.product-panel:last').after(productHTML).promise().done(function(){
             doMoreStuff();
         }); 

这是行不通的。有人可以帮忙吗?谢谢

编辑:在遵循 adeneo 的代码之后,这是我的最终结果,它完美无缺。

    var productLength = $('.product-panel').length-1;
    $('.product-panel:last').after(productHTML);
    var images   = $(".product-panel:gt("+productLength+")").find('img');
    var promises = [];

    images.each(function(idx, img) {
        var def = $.Deferred();

        img.onload  = def.resolve;
        img.onerror = def.reject;

        if ( img.complete ) def.resolve();

        promises.push(def.promise());
    });

    $.when.apply($, promises).done(function() {
       productHeight();
    });

最佳答案

这不是那么容易,你必须找到所有插入的图像并等待它们单独加载,就像这样

var images   = $('.product-panel:last').after(productHTML).next().find('img');
var promises = [];

images.each(function(idx, img) {
    var def = $.Deferred();

    img.onload  = def.resolve;
    img.onerror = def.reject;

    if ( img.complete ) def.resolve();

    promises.push(def.promise());
});

$.when.apply($, promises).done(function() {
    // all images loaded
});

关于javascript - 使用 ajax + jquery 的 after() 函数,现在等待图像加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32027769/

相关文章:

jquery - 使用jquery选择不相邻的元素

javascript - 悬停时暂停幻灯片

javascript - 当一个 Canvas 放置在另一个 Canvas 之上时文本模糊

javascript - 通过 xml-rpc 和 javascript 将文件上传到 WordPress

javascript - AJAX BitMovin - GET 请求不起作用

javascript - 调用位于服务器(并由客户端引用)的 jQuery 脚本适用于 IE 而不是 FF 而不是 Chrome

javascript - 如何创建动态加载的页面 URL?

javascript - 安装多个 npm 版本

javascript - 设置 Blueimp 照片库的困难

jquery - 使用 CSS 定位 DIV