当前位置:  开发笔记 > 编程语言 > 正文

静态图像的图像onload

如何解决《静态图像的图像onload》经验,为你挑选了1个好方法。

我知道要使onload图像工作,你必须在附加onload处理程序后设置src.但是我想将onload处理程序附加到HTML中静态的图像.现在我用以下方式做到这一点(使用jQquery):


$('#img1').load( function() {
 alert('foo');
})
.attr('src', $('img1').attr('src'));

但这是相当丑陋的并且具有明显的流程,它只能用于仅匹配一个图像的选择器.有没有其他更好的方法来做到这一点?

编辑
我的意思是它只能用于只匹配一个图像的选择器是这样做的:



$('.img1').load( function() {
 alert('foo');
})
.attr('src', $('.img1').attr('src'));

这两个图像都有src ='picture.jpg'



1> Borgar..:

您可以通过调用.trigger()或直接触发事件(或它的处理程序).load().

如果你知道你想要这个事件,因为你知道图像已经加载了,那么你可以这样做:

$('#img1').load(function() {
    alert('foo');
  })
  .trigger('load');  // fires the load event on the image

如果您在文档准备好的情况下运行脚本,或者某些时候尚不清楚图像是否存在,那么我会使用以下内容:

$('img.static')
  .load(function(){
    alert('foo');
    return false; // cancel event bubble
  })
  .each(function(){
    // trigger events for images that have loaded,
    // other images will trigger the event once they load
    if ( this.complete && this.naturalWidth !== 0 ) {
      $( this ).trigger('load');
    }
  });

请注意,如果您没有取消img处理程序中的气泡,则加载事件会冒泡(jQuery 1.3)并且您可能会过早地触发文档上的加载处理程序.

记录:img.src=img.src遗憾的是,触发解决方案无法在Safari上正常运行.您需要将其设置src为其他内容(例如#或about:blank),然后返回以进行重新加载.

推荐阅读
虎仔球妈_459
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有