检索器$()。在jQuery中加载事件

检索器$()。在jQuery中加载事件,jquery,javascript-events,Jquery,Javascript Events,当我想在加载图像时发生一些事情时,我使用 $(“#image”).load(function(){something}) 但在Firefox以外的任何系统中,这只在图像第一次加载时起作用。例如,如果我制作了一个图像库,并希望在加载图像时发生一些事情,我使用.load,它第一次就可以工作:但如果用户洗牌回到图像(已经在缓存中),则事件不会在Opera等中触发 解决此问题的一种方法是向映像src添加一些随机数,但这会占用额外的带宽,因为它必须再次下载映像(对吗?) 有什么好的解决方案吗?使用。完

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

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

  • 但在Firefox以外的任何系统中,这只在图像第一次加载时起作用。例如,如果我制作了一个图像库,并希望在加载图像时发生一些事情,我使用.load,它第一次就可以工作:但如果用户洗牌回到图像(已经在缓存中),则事件不会在Opera等中触发
解决此问题的一种方法是向映像src添加一些随机数,但这会占用额外的带宽,因为它必须再次下载映像(对吗?)


有什么好的解决方案吗?

使用。完成检查:

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

使用。完成检查:

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

我将实际添加另一种方式:

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

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

我将实际添加另一种方式:

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

$('#image').one('load',function() {
 so_something();
}).each(function() {
 if(this.complete) $(this).trigger('load');
});
看起来像是在不使用Opera浏览器的图像上分配.load(),看起来像是在不使用Opera浏览器的图像上分配.load()