javascript - 检查 .ajax 请求后加载的所有图像?

标签 javascript jquery ajax

我需要知道何时从附加的 html 源加载所有图像以执行另一个功能。我该如何检查?

$(document).ready(function () {
  $('a.load-more').click(function (e) {
    e.preventDefault();
    $.ajax({
        type: "GET",
        url: $(this).attr('href'),
        data: {
            page: last_id
        },
        dataType: "script",

        success: function () {
            $('.load-more').show();
        }
    });
  });
});

我像这样附加 html 源代码:

$('.container').append('<%= escape_javascript(render(:partial => @items)) %>');

它成功提供了 html 源代码,但我无法确定何时加载了来自该源的所有图像

.container 在每次点击链接时更新 <a href="/items" class="load-more">Load more</a>

.container 源看起来像这样:

<ul class="container">
  <%= render @items %>
</ul>

最佳答案

在所有支持事件捕获阶段的浏览器上,您可以为所有新添加的图像捕获 onload 事件:

document.addEventListener(
    'load',
    function(event){
        var elm = event.target;
        if( elm.nodeName.toLowerCase() === 'img' && $(elm).closest('.container').length && !$(elm).hasClass('loaded')){ // or any other filtering condition
            console.log('image loaded');
            $(elm).addClass('loaded');
            if($('.container img.loaded').length === $('.container img').length) {          
                // do some stuff
                console.log("All images loaded!")
            }
        }
    },
    true // Capture event
);

为了支持例如不处理捕获阶段的 IE8,您应该将 onload 事件设置为特定图像,一旦它们被添加到 DOM 中,在 script onload 事件中设置它。

关于javascript - 检查 .ajax 请求后加载的所有图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32395225/

相关文章:

javascript - JQuery 对话框无法正常工作

jquery - CSS应用于ajax成功响应

javascript - 如何在代码隐藏文件中传递IP值?

javascript - 是否有一个函数可以获取数字数组并返回范围?

javascript - 如何包装第一个元素,然后每个n?

java - 如果数据库中已存在记录,则阻止 HTTP POST 请求

javascript - 产品搜索API

javascript - 在 Redux-saga 中,如何从 Promise 的 Yield 调用中获取结果?

javascript - 同一页面上两个js库的js冲突

c# - ASP.Net/JQuery : PLUploader "Add Files" will not fire after uploading images