【问题标题】:jquery image load strange behaviourjquery图像加载奇怪的行为
【发布时间】:2011-01-02 23:32:59
【问题描述】:

我有一个带有 html 的 img 持有者的页面:-

<img src="someimage.jpeg" alt="image" class="show_image"/>

现在我正在使用代码用 jquery 更新图像...

$('.show_image').attr('src', 'anotherimage.jpeg');

现在当图像被加载时,我想运行一些代码......

图像缩放并让用户知道图像已加载

我运行此代码以知道图像已加载...

 var inc = 0;
    $('.show_image').load(function() {
        inc++;
        console.log('image loaded '+inc);
    });

现在反复更新 img src 上面的加载函数显示一个奇怪的

行为和被调用的次数 img src 被更新...

查看此页面上的 firebig 日志...(使用上面的 prev n next 按钮)

pradyut.dyndns.org/original_image.jsp#imgid=202

我想我必须像这样运行代码

if(inc==1) {
  //run code
}

任何帮助

谢谢

【问题讨论】:

  • 您希望load 事件中的函数只触发一次,对吗?
  • ya(stackoverflow 不允许使用更少的字符:D)

标签: jquery html image


【解决方案1】:

使用jQuery's .one() method:

$('.show_image').one('load', function() {
    inc++;
    console.log('image loaded '+inc);
});

这将在第一次运行后删除处理程序。

【讨论】:

  • 不错的...(stackoverflow 不允许使用更少的字符:D)
【解决方案2】:

只在图像上绑定一次加载事件,而不是每次加载新图像时。

或者,使用unbind 方法在绑定新的加载事件之前取消绑定任何先前的加载事件。

【讨论】:

  • 但我想知道每次加载新图像时是否已加载图像......或者我无法理解你......请一些代码......
  • 如果您只绑定一次新图像,则每次加载新图像时都会调用事件处理程序。当您更改 src 属性时,事件处理程序不会被删除,它仍然存在。您之前实际上已经使用过bind 方法,只是没有直接使用。当load 方法与函数一起使用时,它实际上与.bind('load', func) 相同。您可以使用.unbind('load') 取消绑定该特定事件,或者简单地使用.unbind() 取消绑定所有事件。
猜你喜欢
  • 1970-01-01
  • 2014-05-10
  • 2011-02-14
  • 2015-08-29
  • 2014-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多