V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
sdjl
V2EX  ›  JavaScript

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

  •  
  •   sdjl · 2012-04-12 23:17:47 +08:00 · 2795 次点击
    这是一个创建于 4398 天前的主题,其中的信息可能已经有所发展或是发生改变。
    某个元素的父元素被hide掉了, 然后用$(this).scrollTop() 求出的值为0, 没有办法求出正确的值么?
    10 条回复    1970-01-01 08:00:00 +08:00
    yangg
        1
    yangg  
       2012-04-12 23:40:35 +08:00
    应该不行,父元素隐藏后,所有height相关offsetHeight, scrollHeight, .etc的属性值 全为0,算不出来了,
    你可以把父元素visibility:hidden,再show()一下,求出相关值 ,再隐藏掉
    yangg
        2
    yangg  
       2012-04-12 23:41:42 +08:00
    而且一个元素如果黑夜被hide,是不会被渲染的,也就根本 无从算起了
    yangg
        3
    yangg  
       2012-04-12 23:42:23 +08:00
    fix: 如果默认被hide


    ps:mac上五笔输入法还是个痛啊
    sdjl
        4
    sdjl  
    OP
       2012-04-12 23:57:00 +08:00
    @yangg 谢谢, 虽然这是一个办法, 但还是不能用在我的问题中, 因为设置为visibility:hidden的话会引起"跳动", 体验不好.
    yangg
        5
    yangg  
       2012-04-13 02:03:02 +08:00
    @sdjl 想不跳动,就叫它不跳动好了,添加一个元素设置left:-9999px;这样,将元素克隆一下添加进去也可以获取
    bluex
        6
    bluex  
       2012-04-13 11:13:44 +08:00
    @sdjl 只是单纯的显示,求值,再隐藏,应该是不会引起跳动吧,速度快到用户完全感觉不到的
    sdjl
        7
    sdjl  
    OP
       2012-04-13 19:01:50 +08:00
    @yangg left:-9999px; 这个可以解释一下吗?
    sdjl
        8
    sdjl  
    OP
       2012-04-13 19:02:19 +08:00
    @bluex 会啊~~
    yangg
        9
    yangg  
       2012-04-13 22:56:38 +08:00
    @sdjl sorry,思路实验失败,http://jsfiddle.net/U2f34/1/ 这样方法只能获取 height之类的,scrollTop,之类的clone之后会重置,不好搞了,要不visibility让它闪,要不就是使用自己定义好的方法来hide父元素,hide之前先把其scrollTop属性保存起来
    sdjl
        10
    sdjl  
    OP
       2012-04-14 16:59:00 +08:00
    @yangg 恩 也只能这样了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5201 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 67ms · UTC 09:40 · PVG 17:40 · LAX 02:40 · JFK 05:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.