.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属性之前设置了加载处理程序,则可以可靠地获取加载事件.这是今天早些时候写的捕获加载事件的代码: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,以便您可以看到它是否被调用.