加载所有图像后执行代码

时间:2013-12-12 12:25:44

标签: javascript jquery image

我希望在加载所有图像后进行一些界面修复(需要保存图像的元素的高度并使用它们来更改其他元素的高度)我将加载事件附加到所有图像但我的加载函数仅执行一旦。我试着只使用jQuery:

$(function() {
    var $img = $('img');
    var length = $img.length;
    var count = 0;

    function load() {
       console.log(++count + ' == ' + length);
       if (count == length) {
          // all images loaded
       }
    }
    $img.load(load).error(load);
});

我也尝试使用onload和onerror事件:

$img.each(function() {
    this.onload = load;
    this.onerror = load;
});

但是当加载页面时,我只有一个日志:

1 == 33

(我正在使用Dev Tools和禁用缓存在Xubuntu上的Chromium中进行测试)

我在这里做错了什么?如何在加载所有图像后执行代码?

2 个答案:

答案 0 :(得分:4)

听起来你应该对window的{​​{1}}事件进行处理:

load

来自文档:“当页面完全加载包括图形时运行一个函数。”

http://api.jquery.com/load-event/

答案 1 :(得分:3)

页面加载完成后执行该功能

$(window).load

这样所有元素都已到位并准备好“测量”