【问题标题】:jQuery .load() not working on my imagejQuery .load() 无法处理我的图像
【发布时间】:2011-04-05 00:35:28
【问题描述】:

我有一些代码在我的图像完成加载后尝试运行。我使用以下 jQuery 代码:

$("#myimageid").load(function() {
    alert('Image Loaded');
});

但是弹出窗口永远不会出现。我无法让 .load() 函数工作!有人对此有疑问吗?

【问题讨论】:

  • 你把代码放在哪里了?

标签: jquery


【解决方案1】:

如果您图像已经有一个设置的源之后运行这个,您需要对缓存图像进行额外检查(谁触发了事件,就在您添加事件处理程序侦听它)。你可以这样做:

$("#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 错误

【讨论】:

  • 成功了!谢谢队友 $(document).ready(function() { $("#googleimage").load(function() { alert('Image Loaded'); }).each(function() { if (this.complete) $(this).load(); }); });
  • 不错,为什么这么难找!
  • 值得注意的是 .complete 不是由 jQuery 定义的,而是在 DOM 元素本身上定义的。因此$(selector).complete == undefined 所以你可能想要打开它$(selector)[0].complete。答案暗示这是因为 $.each 将原始 DOM 元素分配为 this 但我很困惑:)
  • @yoshi 是正确的。我相信$(selector).prop("complete") 也应该可以工作。
  • 在 jquery 3 if(this.complete) $(this).trigger('load');
【解决方案2】:

当您清除浏览器的缓存并再次尝试该脚本时会发生什么?来自jQueryload()docs

可能是加载事件 如果图像是不会触发的 从浏览器缓存加载。到 考虑到这种可能性,我们可以 使用触发的特殊加载事件 如果图像准备好了,立即。 event.special.load 当前是 可作为插件使用

一般来说,没有必要 等待所有图像完全 加载。如果代码可以执行 较早,通常最好放置 它在发送到 .ready() 的处理程序中 方法。

所以听起来您的缓存图像没有触发加载事件,所以您可能想尝试提到的插件。可以找到JS文件下载here

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    相关资源
    最近更新 更多