在jQuery中重新触发$()。load事件

时间:2010-02-02 14:54:08

标签: jquery javascript-events

当我想要在加载图像时发生某些事情时,我使用

$(“#image”)。load(function(){something});

  • 但除了Firefox之外的其他任何东西,这只在第一次加载图像时起作用。例如,如果我已经创建了一个图像库并希望在加载图像时发生某些事情,我使用.load并且它第一次工作:但是如果用户随机返回到图像(已经在缓存中),则事件不会触发在Opera,IE等中。

解决此问题的一种方法是在图像src中添加一些随机数,但这会占用额外的带宽,因为它必须再次下载图像(对吗?)。

对此有什么好的解决方案吗?

2 个答案:

答案 0 :(得分:2)

使用.complete检查:

$("#image").each(function() {
  if(this.complete) doSomething(); //Runs immediately, image ready (cached)
  else $(this).load(function() { doSomething(); }); //Will run when loaded
});

答案 1 :(得分:1)

我实际上会添加另一种方式:

这不是我做的,不幸的是我不知道背后的原始大脑:

$('#image').one('load',function() {
 so_something();
}).each(function() {
 if(this.complete) $(this).trigger('load');
});