V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Windweller
V2EX  ›  程序员

问一个jQuery读取div高度时图片尚未加载完成的问题

  •  
  •   Windweller · 2013-09-21 02:15:16 +08:00 · 6630 次点击
    这是一个创建于 4082 天前的主题,其中的信息可能已经有所发展或是发生改变。
    jQuery(function() {

    var contentHeight = jQuery("#left-content-space").height();
    alert(contentHeight);

    jQuery("#status-feed").slimScroll({
    height : contentHeight,
    color : "#D1D7D7",
    position: "left"
    });
    });

    我用了no-conflict模式。。所以变成jQuery而不是$。。

    主要问题在于。。HTML里面的left-content-space的div框内有多张图片。图片将会撑大这个div框。div框在图片读取完成的时候有550px的高度,在图片没读完的时候是220px的高度。。请问有没有什么办法等图片读取完后再获得div的高度呐?
    5 条回复    1970-01-01 08:00:00 +08:00
    fiture
        1
    fiture  
       2013-09-21 08:49:00 +08:00   ❤️ 1
    那就等图片,加载完成之后再读取,目标元素的高度:

    jQuery有个load事件,在目标元素以及所有子元素加载完成后触发,但是各种浏览器兼容都太一致,说说大体的:

    https://gist.github.com/fiture/6645811

    还有一种方法是,后台读取图片高度,在html里面明确指出图片高度以及宽度:
    <img src="xx.jpg" alt="xx" width="xx" height="yy" />
    reducm
        2
    reducm  
       2013-09-21 08:49:53 +08:00 via iPad
    在做markdown的预览滚动吗?我之前做的时候预到这问题

    http://desandro.github.io/imagesloaded/ 用这类库去回调,另外还要处理缓存图片的情况
    slixurd
        3
    slixurd  
       2013-09-21 10:04:01 +08:00
    image本身也有onload函数,当然也可以像一楼一样直接用JQuery的load,要么就服务器端手动传参数
    Windweller
        4
    Windweller  
    OP
       2013-09-21 10:09:40 +08:00
    @fiture 唔,一个小问题是,if ($img.width() && $img.height()) 是判断这个能读取出来了么。。以及。。var me = arguments.callee; 这是。。什么意思。。这个arguments是从哪里来的诶?
    jarontai
        5
    jarontai  
       2013-09-21 10:39:30 +08:00
    我以前也做过类似的,建议还是使用一个图片加载插件比较好; 楼上 reducm 推荐的这个好像不错
    http://desandro.github.io/imagesloaded/,可单独使用,也可以作为jq的插件使用,调用也方便;
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   924 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 22:25 · PVG 06:25 · LAX 14:25 · JFK 17:25
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.