Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在新映像加载完成后更改js事件?_Javascript_Jquery_Html_Javascript Events - Fatal编程技术网

Javascript 在新映像加载完成后更改js事件?

Javascript 在新映像加载完成后更改js事件?,javascript,jquery,html,javascript-events,Javascript,Jquery,Html,Javascript Events,我有一个照片库网页,其中一个元素的src通过javascript点击改变,以显示下一张图片——我猜是穷人的ajax。当新图像几乎立即出现时,对更快的连接非常有效。即使加载需要几秒钟,我测试过的每个浏览器都会保留旧图像,直到新图像完全加载 但是,在缓慢的连接上等待这几秒钟有点让人困惑,我想知道在加载新图像时是否会触发一些javascript事件,让我投入一些工作。。。动画gif或其他东西 我知道我可以真正使用AJAX,我已经在使用jQuery了,但这是一个非常好而且简单的解决方案。除了这个滞后,还

我有一个照片库网页,其中一个元素的src通过javascript点击改变,以显示下一张图片——我猜是穷人的ajax。当新图像几乎立即出现时,对更快的连接非常有效。即使加载需要几秒钟,我测试过的每个浏览器都会保留旧图像,直到新图像完全加载

但是,在缓慢的连接上等待这几秒钟有点让人困惑,我想知道在加载新图像时是否会触发一些javascript事件,让我投入一些工作。。。动画gif或其他东西

我知道我可以真正使用AJAX,我已经在使用jQuery了,但这是一个非常好而且简单的解决方案。除了这个滞后,还有什么其他原因我应该远离这种改变图像的方法吗


谢谢。

您可以在加载事件上设置处理程序

$('img.whatever')
  .load(function() { /* do stuff */ })
  .attr('src', newURL);
事实上,我想你会想用live来做这件事:

$('img.reloadable').live('load', function() { $(this).show(); });
// ...
$('img#someId').hide().attr('src', newURL);
编辑-哇,那一年去了哪里?事实证明,我在很久以前输入的实时方法的一个问题是加载事件没有冒泡。但是,现在您可以做的是利用图像对象与真实对象相对应的方式
您可以在load事件上设置处理程序

$('img.whatever')
  .load(function() { /* do stuff */ })
  .attr('src', newURL);
事实上,我想你会想用live来做这件事:

$('img.reloadable').live('load', function() { $(this).show(); });
// ...
$('img#someId').hide().attr('src', newURL);
编辑-哇,那一年去了哪里?事实证明,我在很久以前输入的实时方法的一个问题是加载事件没有冒泡。但是,现在您可以做的是利用图像对象与真实对象相对应的方式
您只需使用jQuery预加载图像,这样当用户单击时,下一个图像就已经加载,并且不会有延迟……除非用户转到您的页面,并在加载图像之前开始单击图像


您只需使用jQuery预加载图像,这样当用户单击时,下一个图像就已经加载,并且不会有延迟……除非用户转到您的页面,并在加载图像之前开始单击图像

即使使用IE的疯狂缓存处理,这也应该可以工作


即使IE疯狂的缓存处理,这也应该可以使用。

是的,我考虑过这一点,但大约有100个全尺寸图像等待加载,大多数人不会看到所有图像。是的,我考虑过这一点,但大约有100个全尺寸图像等待加载,大多数人不会看到所有这些。唯一的问题是每次单击都会绑定一个新的加载处理程序。唯一的问题是每次单击都会绑定一个新的加载处理程序。谢谢,就是这样。对其他人来说非常清楚:当src=xxx被js更改时,$.load会在新映像加载完成后触发。这似乎对我不起作用。请参阅示例:警报从未显示。嗯@牛头人:好吧,让我玩一下,看看我能不能弄清楚到底发生了什么。@Tauren啊,看来负载没有冒泡。因此,如果您试图使用live或delegate,可能在某些浏览器中无法正常工作,但可能无法正常工作。我会更新答案;谢谢,很抱歉给您带来了困惑。谢谢您提供的解决方案和对它为什么不起作用的描述!谢谢,就是这个。对其他人来说非常清楚:当src=xxx被js更改时,$.load会在新映像加载完成后触发。这似乎对我不起作用。请参阅示例:警报从未显示。嗯@牛头人:好吧,让我玩一下,看看我能不能弄清楚到底发生了什么。@Tauren啊,看来负载没有冒泡。因此,如果您试图使用live或delegate,可能在某些浏览器中无法正常工作,但可能无法正常工作。我会更新答案;谢谢,很抱歉给您带来了困惑。谢谢您提供的解决方案和对它为什么不起作用的描述!