Live()关键字无法使用动态html图像加载

Sar*_*pps 4 jquery load dynamic-html

我将图像动态添加到页面中,我似乎无法使用live()动态地使用'load'事件.

这是我目前的代码:

$('#largeImg' + nextUniqueItemID).hide();
$('#largeImg' + nextUniqueItemID).live('load' , function() {
    $('#loader' + nextUniqueItemID).hide();
    $('#largeImg' + nextUniqueItemID).show();
});
Run Code Online (Sandbox Code Playgroud)

'#largeImg' + nextUniqueItemID之处在于加入到页面早些时候功能的图像和'#largeImg' + nextUniqueItemID被加载图像.

我觉得好像我可能会滥用"直播",因为它不需要听众,而是立即触发事件.

感谢你的帮助.我试过"绑定"而且从未触发过.我也尝试消除负载,但这不起作用.有没有办法将一个监听器附加到一个事件,指示图像何时加载?

Anu*_*rag 6

我认为jQuery文档在这个问题上可能会有点误导,除非它正在做一些非常特殊的事情来解决这个问题.

在图像等元素上加载事件不会冒泡.1,2

由于它们没有冒泡,因此document不知道是否已触发加载事件.

因为document不了解load事件,live会渲染无用,因为live依赖于冒泡到文档的事件,一旦它们这样做,它就会将事件目标与它已存在的文件中的选择器匹配,如果匹配,为该元素触发事件处理程序.

例如,假设您要注册以下直播活动:

$("#container > input").live("change", function() {
    alert("changed");
});
Run Code Online (Sandbox Code Playgroud)

然后jQuery将在文档对象上添加一个更改事件监听器(如果它尚不存在)(类似于):

$(document).bind("change", function() {
    ..
});
Run Code Online (Sandbox Code Playgroud)

当任何更改事件冒泡到文档时,它会遍历每个已注册的选择器,并检查给定选择器的任何结果节点是否包含事件目标(事件源自的元素).如果它存在,则为该事件目标触发相应的"实时"事件处理程序.

如果文件首先不知道该事件,那么这一切都不可能.

除非我弄错了并且jQuery有一些秘密的做法,你应该直接绑定load事件而不是通过live来实现它.

$("selector").bind("load", function() { .. });
Run Code Online (Sandbox Code Playgroud)