微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

更改src时jquery回调映像加载

我正在更改img src,一旦我加载了一个json文件,这一切都很好.但我想确保图像被完全加载.我可以做什么使用:
.one("load",function(){ 
                alert("image has load yay");
            });

但是阅读各种帖子后,如果图像在缓存中,并不是所有的浏览器都会触发负载.我似乎没有在浏览器中得到这个问题,这是为了导致这个问题.但是我只在Mac上测试了FF(6.0.2),Chrome(13.0.7)和Safari(5.0.5).现在我确定IE必须有一个问题,只有PC相关.我正在运行漂亮的最新版本的浏览器,所以有一些改变到现在的火力.或者我的其他想法是我正在运行最新版本的jquery(1.6.3)已经.load被更改了?

我希望这是运行最新的jquery,但如果没有,这是一个较旧的浏览器问题,那么我需要修复.我在这个网站上尝试过几个解决方案:
jQuery loading images with complete callback
还有一些对.load api页面评论
http://api.jquery.com/load-event/#comment-30211903

但我似乎不能让他们上班.第一个根本不起作用,第二个似乎在.each()上掉下来.

这是我迄今为止的代码,似乎工作正常,但不能确定可能是较旧的浏览器问题.

$.getJSON(jsonURL,function(json) {         
    $("a.imgZoom img").attr("src",json[imageID].largeImage).one("load",function(){ 
         alert("the image has loaded");
    //do something here
    });
$("a.imgZoom").attr("href",json[imageID].largeImage);
})

提前感谢任何帮助.

解决方法

基于我一年前做的一些测试,当将图像的.src从一个值更改为另一个值时,我发现没有可靠的方法获取加载事件.因此,当加载新图像时,我不得不诉诸于加载新图像,并替换新图像.该代码已经在几百个网站(幻灯片使用)大约一年的时间内成功运行,所以我知道它的工作原理.

如果在设置新映像之前的.src属性之前设置了加载处理程序,则可以可靠地获取加载事件.这是今天早些时候写的捕获加载事件的代码jQuery: How to check when all images in an array are loaded?.

代码附加事件处理程序在设置之前.src在我尝试过的现代浏览器中为我工作(我没有测试旧的浏览器):

$("img").one("load",function() {
        // image loaded here
    }).attr("src",url);

您可以看到它在这里工作:http://jsfiddle.net/jfriend00/hmP5M/,您可以使用该jsfiddle测试任何您想要的浏览器.只需点击图像,使其加载新的图像.它遍历三个不同的图像(每次设置.src),每次都加载其中两个(从不从高速缓存),另一个从缓存中加载,以便测试这两种情况.每当调用.load处理程序时,它会向屏幕输出一个msg,以便您可以看到它是否被调用.

原文地址:https://www.jb51.cc/jquery/179510.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐