图片由于缓存所以不会每次使用 .load() 都会有效果 :doge:

2014-11-23 21:15:29 +08:00
 0x142857

姑且使用这个标题来描述这个问题。

情况就是我的一个网站用 Twitter 那种居中显示图片一部分的方法来显示图片,我的原理就是前端载入图片时给 $('img') 定义 CSS

但是不是每次又都有效果,最后发现可能是因为图片的缓存原因,

我尝试的解决方法是

var el = $('img');
    el.one("load", function() {
       /*do something, for me I wanna make the image center visible, so I make these moves, the parent of img element is overflow:hidden  => 
        var marginTop = 0;
        if($(this).height()>253){
            marginTop = ($(this).height()-253) /2;
            marginTop = '-'+marginTop+'px';
        }

        $(this).css('margin-top',marginTop);
        */
    }).each(function() {
      if(this.complete) $(this).load();
    });

以前的实现方式:

var el = $('img');
el.on('load',function(){
        //do something
    })

似乎能解决问题,求高手正解 …

3453 次点击
所在节点    JavaScript
3 条回复
keakon
2014-11-23 22:52:52 +08:00
目测是你绑定的时机不对,在图片加载后才绑的。
airyland
2014-11-23 23:42:01 +08:00
绑定load事件再attr src属性。
图片缓存问题的话可以在src中加个随机字符串来解决。
loser
2014-11-25 09:22:37 +08:00
我眼花啦?
LZ帖子后面跟了个doge头像?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/148729

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX