【发布时间】:2011-04-05 00:35:28
【问题描述】:
我有一些代码在我的图像完成加载后尝试运行。我使用以下 jQuery 代码:
$("#myimageid").load(function() {
alert('Image Loaded');
});
但是弹出窗口永远不会出现。我无法让 .load() 函数工作!有人对此有疑问吗?
【问题讨论】:
-
你把代码放在哪里了?
标签: jquery
我有一些代码在我的图像完成加载后尝试运行。我使用以下 jQuery 代码:
$("#myimageid").load(function() {
alert('Image Loaded');
});
但是弹出窗口永远不会出现。我无法让 .load() 函数工作!有人对此有疑问吗?
【问题讨论】:
标签: jquery
如果您在图像已经有一个设置的源之后运行这个,您需要对缓存图像进行额外检查(谁触发了事件,就在您添加事件处理程序侦听它)。你可以这样做:
$("#myimageid").on('load', function() {
alert('Image Loaded');
}).each(function() {
if(this.complete) $(this).load();
});
更新以后版本的查询,使用:
if(this.complete) $(this).trigger('load');
使用(this).load(); 会产生Cannot read property 'indexOf' of undefined 错误
【讨论】:
.complete 不是由 jQuery 定义的,而是在 DOM 元素本身上定义的。因此$(selector).complete == undefined 所以你可能想要打开它$(selector)[0].complete。答案暗示这是因为 $.each 将原始 DOM 元素分配为 this 但我很困惑:)
$(selector).prop("complete") 也应该可以工作。
if(this.complete) $(this).trigger('load');