小编典典

图像加载时的 jQuery 回调(即使图像被缓存)

all

我想要做:

$("img").bind('load', function() {
  // do stuff
});

但是从缓存中加载图像时不会触发 load 事件。jQuery 文档建议使用插件来解决此问题,但它不起作用


阅读 76

收藏
2022-04-22

共1个答案

小编典典

如果src已设置,则事件在缓存案例中触发,甚至在您绑定事件处理程序之前。要解决此问题,您可以循环检查并触发基于 off
的事件.complete,如下所示:

$("img").one("load", function() {
  // do stuff
}).each(function() {
  if(this.complete) {
      $(this).load(); // For jQuery < 3.0 
      // $(this).trigger('load'); // For jQuery >= 3.0 
  }
});

请注意从.bind()到的更改,.one()因此事件处理程序不会运行两次。

2022-04-22