前端技术分享,欢迎关注!

前端技术分享论坛

 找回密码
 注册帐号

QQ登录

只需一步,快速开始

查看: 10909|回复: 0
打印 上一主题 下一主题

jquery offset()获取隐藏元素坐标值始终为0

[复制链接]

127

主题

146

帖子

1146

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1146
跳转到指定楼层
楼主
发表于 2015-2-10 23:00:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
jquery offset().top获取值为0:http://www.phpvar.com/archives/1822.html
这是之前网站上发过一篇文章,关于jquery offset()获取隐藏元素坐标值的问题,这里要特别强调的是:

jquery offset()、position()方法 以及原生js offsetTop属性、 getBoundingClientRect()方法都无法获取隐藏元素的坐标相关值,表现为获取值始终为0。

网上基本都有说到这个问题,但却没给出很好的解决方法,可能有人会想到用visibility: hidden; 去代替 display:none的方法,即达到隐藏元素效果,又能获取到元素的坐标值的目的。但问题是被visibility: hidden; 掉的元素本身还是占用页面位置,当该元素占用面积比较大的时候这方法就是直接影响到页面的显示效果了!


终极解决方法: (obj 对象为要进行offset()操作的元素)
$(obj).show();
// obj进行offset()相关的操作
var temp=$(obj).offset().top;
alert(temp);
$(obj).hide();


标红的就是关键:在要对obj 对象进行offset()操作前先把该元素显示出来,以便能获取offset()值,操作完后,再隐藏掉就好了,无副作用!



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则

QQ|小黑屋|手机版|Archiver|前端技术分享 ( 粤ICP备20056750号  

GMT+8, 2024-4-20 19:50 , Processed in 0.253236 second(s), 35 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表