我想要做:
$("img").bind('load', function() { // do stuff });
但是从缓存中加载图像时不会触发 load 事件。jQuery 文档建议使用插件来解决此问题,但它不起作用
如果src已设置,则事件在缓存案例中触发,甚至在您绑定事件处理程序之前。要解决此问题,您可以循环检查并触发基于 off 的事件.complete,如下所示:
src
.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()因此事件处理程序不会运行两次。
.bind()
.one()