前端技术分享论坛

标题: jquery offset()获取隐藏元素坐标值始终为0 [打印本页]

作者: phpvar    时间: 2015-2-10 23:00
标题: jquery offset()获取隐藏元素坐标值始终为0
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()值,操作完后,再隐藏掉就好了,无副作用!








欢迎光临 前端技术分享论坛 (https://www.phpvar.com/bbs/) Powered by Discuz! X3.2