难道没有办法获得被hide掉的元素的scrollTop值吗?

2012-04-12 23:17:47 +08:00
 sdjl
某个元素的父元素被hide掉了, 然后用$(this).scrollTop() 求出的值为0, 没有办法求出正确的值么?
2896 次点击
所在节点    JavaScript
10 条回复
yangg
2012-04-12 23:40:35 +08:00
应该不行,父元素隐藏后,所有height相关offsetHeight, scrollHeight, .etc的属性值 全为0,算不出来了,
你可以把父元素visibility:hidden,再show()一下,求出相关值 ,再隐藏掉
yangg
2012-04-12 23:41:42 +08:00
而且一个元素如果黑夜被hide,是不会被渲染的,也就根本 无从算起了
yangg
2012-04-12 23:42:23 +08:00
fix: 如果默认被hide


ps:mac上五笔输入法还是个痛啊
sdjl
2012-04-12 23:57:00 +08:00
@yangg 谢谢, 虽然这是一个办法, 但还是不能用在我的问题中, 因为设置为visibility:hidden的话会引起"跳动", 体验不好.
yangg
2012-04-13 02:03:02 +08:00
@sdjl 想不跳动,就叫它不跳动好了,添加一个元素设置left:-9999px;这样,将元素克隆一下添加进去也可以获取
bluex
2012-04-13 11:13:44 +08:00
@sdjl 只是单纯的显示,求值,再隐藏,应该是不会引起跳动吧,速度快到用户完全感觉不到的
sdjl
2012-04-13 19:01:50 +08:00
@yangg left:-9999px; 这个可以解释一下吗?
sdjl
2012-04-13 19:02:19 +08:00
@bluex 会啊~~
yangg
2012-04-13 22:56:38 +08:00
@sdjl sorry,思路实验失败,http://jsfiddle.net/U2f34/1/ 这样方法只能获取 height之类的,scrollTop,之类的clone之后会重置,不好搞了,要不visibility让它闪,要不就是使用自己定义好的方法来hide父元素,hide之前先把其scrollTop属性保存起来
sdjl
2012-04-14 16:59:00 +08:00
@yangg 恩 也只能这样了

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

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

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

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

© 2021 V2EX