javascript - 如何让 jQuery 在处理图像之前等待图像列表加载?

标签 javascript jquery dom

如何告诉 jQuery 在启动图像轮播之前等待图像列表加载?

我有一个要在图像轮播中使用的大图像列表。这些图像的大小不同,我想使用 javascript/jQuery 根据最宽的图像调整视口(viewport)大小,同时将所有图像缩放到相同的高度。

<div id="viewport" style="overflow:hidden" class="clearfix">
    <ul id="carousel" style="width:2000em">
       <li><img src="large01.jpg"></li>
       <li><img src="large02.jpg"></li>
       <li><img src="large03.jpg"></li>
       <li><img src="large04.jpg"></li>
       <li><img src="large05.jpg"></li>
       <!-- li { float: left } -->
    </ul>
</div>

我认为我需要等待所有图像加载后才能确定它们的 $(img).height()$(img).width() 但我尝试过 $(document).ready()$(window).load()$(window).ready() code> 跨浏览器结果不一致。此外,似乎某些 .load() 已被弃用。

处理这个问题的正确方法是什么。

或者是否有办法在加载图像之前获取图像的宽度和高度?

最佳答案

这应该可以完成工作:

var images = $('#carousel img');
var count = images.length;
var loaded = 0;

images.each(function() {
    var image = new Image();
    image.onload = function() {
        loaded += 1;

        if (loaded == count) {
            //all images loaded
        }
    }

    image.src = $(this).attr('src');
});

关于javascript - 如何让 jQuery 在处理图像之前等待图像列表加载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25040337/

相关文章:

javascript - 增加一个字符串。 (JS 或 PHP)

javascript - 如何将值设置为在 select2 中显示而不是文本

javascript - AngularJS 中服务器端和客户端分页的组合

jquery - $.ajax 使 API 调用两次,尽管它只被调用一次

jquery - 如何修复滚动条总是在div的底部?

javascript - 使用 AJAX、Javascript/jQuery、DOM 和 Facebook Like 按钮进行无限滚动

javascript - 调整 DOM 节点层次结构的大小?

javascript - 隐藏 id 中包含变量的 <tr>

javascript - 如何避免在免费 jqgrid 中单击单元格编辑时水平滚动

javascript - 将对象从 Django 传递到 Javascript DOM