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

2013-09-21 02:15:16 +08:00
 Windweller
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的高度呐?
6660 次点击
所在节点    程序员
5 条回复
fiture
2013-09-21 08:49:00 +08:00
那就等图片,加载完成之后再读取,目标元素的高度:

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

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

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

http://desandro.github.io/imagesloaded/ 用这类库去回调,另外还要处理缓存图片的情况
slixurd
2013-09-21 10:04:01 +08:00
image本身也有onload函数,当然也可以像一楼一样直接用JQuery的load,要么就服务器端手动传参数
Windweller
2013-09-21 10:09:40 +08:00
@fiture 唔,一个小问题是,if ($img.width() && $img.height()) 是判断这个能读取出来了么。。以及。。var me = arguments.callee; 这是。。什么意思。。这个arguments是从哪里来的诶?
jarontai
2013-09-21 10:39:30 +08:00
我以前也做过类似的,建议还是使用一个图片加载插件比较好; 楼上 reducm 推荐的这个好像不错
http://desandro.github.io/imagesloaded/,可单独使用,也可以作为jq的插件使用,调用也方便;

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

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

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

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

© 2021 V2EX