检测 jQuery 1.8+ 中的图像加载 - 自弃用以来替代 load()
Posted
技术标签:
【中文标题】检测 jQuery 1.8+ 中的图像加载 - 自弃用以来替代 load()【英文标题】:Detect image load in jQuery 1.8+ - alternative to load() since deprecation 【发布时间】:2013-01-24 18:18:42 【问题描述】:说明
出于我欣赏的原因,从 jQuery 1.8 开始,load
事件已被弃用,但是,仍然可以通过使用某些变通方法来检测图像是否已加载(即使它在缓存中) . 因此,该事件的弃用实际上是非常令人恼火的,因为它至少作为检测图像何时完成加载到页面上的起点。
尽管如此,它已被弃用,因此我提出这个问题是希望我能找到答案,从而帮助我和可能很快遇到相同问题的其他人。
一个例子(在 jQuery 1.8 之前)
不使用插件(因为这应该可以用很少的代码完成,因此不需要插件),我想在我的页面上的每个图像加载时调用一个函数。
类似这样的东西(由于弃用,这将不起作用):
$('#mn_content .column').on('load','img',function()
console.log('loaded');
)
我的问题
在load
事件不存在的情况下,有人知道如何实现这一点吗?
请注意:如果(现在)实现这一点的唯一方法是使用 javascript new Image
对象,那么请不要浪费您的时间来帮助我因为其他人比我更需要你的帮助。我能够编写这段代码,只是对于如此基本的东西来说似乎有点啰嗦。
我只是问了这个问题,以确保不使用 Javascript image
对象就无法实现这一目标
我当然会非常感谢任何帮助,我只是不想让你在其他人更需要你帮助的时候花太多时间在我身上。 :-)
【问题讨论】:
您的.each
显然只迭代了 document
而不是委托目标。
@FabrícioMatté 这是一个很好的观点,请忽略它。那不是我使用的代码,我是为了说明目的而编写的,并没有对其进行测试。但很明显,+1 :-)
load() method deprecated? 的可能重复项
【参考方案1】:
load 事件仍然存在,只是不能再使用.load
绑定到它。您的事件委托示例应继续适用于 1.9 和 2.0(如果您正在测试的浏览器支持加载事件的冒泡)
我个人仍然会use the new Image method,因为我不相信所有浏览器都会正确地冒泡加载事件。
编辑:对不起,如果我不清楚,我的意思是加载事件仍然存在,你只需要正确绑定它。由于加载事件不会在所有浏览器中冒泡(如果在任何浏览器中?),您必须将事件直接绑定到图像。我建议使用您要求我们不要为您提供示例的方法。
【讨论】:
我认为它可能是,但由于某种原因它在我的脚本中不起作用。我已经调试了我的代码,并不是要调试很多东西,但我无法让它工作。我将用我的实际代码更新我的问题。感谢您的回答:-) 我同意浏览器不一定都能正确冒泡,这就是为什么我有complete
后备
查看对您问题的评论,您在.each()
上的逻辑不正确,:)
而且,正如 Kevin 所说,如果浏览器没有冒泡 load
事件,您的委托处理程序将不会触发。
@KevinB 是的,但只是因为我没有测试该代码。这纯粹是为了说明目的。我将发布我实际使用的代码:-)以上是关于检测 jQuery 1.8+ 中的图像加载 - 自弃用以来替代 load()的主要内容,如果未能解决你的问题,请参考以下文章
使用 javascript/jquery 检测 Asp.Net 表单是不是有效
带有第一个 div 的 jQuery 自定义手风琴在初始加载时打开 - 修改箭头图像的问题