2015-02-10 更新
----------------------------------------------------------------------------------------------------
Element.offset().top方法正常情况下是获得元素相对浏览器视窗之间的距离,但如果元素本身是隐藏的即加了display:none,该方法取得值始终都是0;
如代码所示:
*{margin:0;padding:0;}
body{height:2000px;}
.demo{width:200px;height:200px; border:1px red solid; position:absolute;right:0;top:200px; display:none;}
$(function(){
var temp=$(".demo").offset().top;
alert(temp);
})
alert出来的是0
解决方法:直接获取元素css中定义的top值,再去掉获取值中的px单位值,修改后的源码如下:
*{margin:0;padding:0;}
body{height:2000px;}
.demo{width:200px;height:200px; border:1px red solid; position:absolute;right:0;top:200px; display:none;}
$(function(){
var temp=$(".demo").css("top");
temp=stripPX(temp);
//去掉px
function stripPX(obj){
if(obj.indexOf("px")!=-1){
return parseInt(obj.slice(0,-2));
}else{
return "参数格式不正确!";
}
}
alert(temp);
})