如何使用jQuery live()进行img onload事件?

tyb*_*103 15 html javascript jquery onload

我想在加载图像时运行一些代码.另外,我想不引人注目地进行(不是内联).更具体地说,我想使用jQuery的live()功能,因此任何动态加载的图像都会发生这种情况.

我试过了:

<img class="content_image" alt="" src="..." />
<script>
    $('.content_image').live('load', function() {
      alert('loaded!');
    });
</script>
Run Code Online (Sandbox Code Playgroud)

除此之外load,我已经尝试过onload,而且onLoad.当我用'click'替换时,所有工作都按预期工作,所以我知道这不是一些干扰bug.

我无法找到该live()功能的可用事件类型列表,所以我知道,这可能是不可能的.

T.J*_*der 18

(它会load,不是onloadonLoad.)

load不起泡(根据imgHTML5规范中条目,它是一个"简单事件",它不会冒泡),所以你不能将它用于live或者delegate,它依赖于从一个元素冒泡到它的祖先的事件元件(一个或多个).

你必须把它挂在各个img元素上(你设置它们之前这样做src,因为否则你会错过它;并且总是记得要注意error).(是的,你真的可以错过它:浏览器不是单线程的,只是JavaScript主线程.如果你设置src并且图像在缓存中或很快就可用,浏览器可以触发事件.事件被触发的方式是浏览器查看当事件被触发时注册的处理程序,并在JavaScript主线程返回浏览器时对要调用的处理程序进行排队.如果没有注册处理程序,则它们不会排队,并且你永远不会得到回调.)