jQuery position().top返回0,而不是实际值
jQuery position().top returns 0 rather than real value
根据jQuery官方文档,该函数应该:
"获取匹配元素集中第一个元素相对于偏移父元素的当前坐标。"
以下代码预计返回值51,但返回值为0。有人能解释为什么吗?提前谢谢。
我知道添加css(top:xx)是有效的,如果是的话,这是否意味着position()只适用于元素的css属性为top的情况?
<html>
<head>
<style type="text/css">
.outer
{
width:200px;
height:200px;
overflow-y:auto;
border:1px dotted grey;
position:absolute;
}
.inner
{
width:50px;
height:50px;
margin-top: 50px;
border:1px solid red;
}
</style>
<script type="text/javascript" src="jquery-1.7.2.min.js"></script>
<script type="text/javascript"">
$(document).ready(function () {
$('.inner').mousedown(function (e) {
alert($(this).position().top);
})
})
</script>
</head>
<body>
<div class="outer">
<div class="inner"></div>
</div>
</body>
</html>
API描述正确。内部元素的(初始)默认CSS属性值为top:auto
。有一个margin-top:50px
,正如你所知,它给人的印象是内部元素是从顶部看的50px
,但事实并非如此。jQuery将返回position().top = 0
,因为元素的顶部实际上是来自父元素的0px
。
为了让jQuery使用.position()
函数返回期望值,您需要将内部<div>
相对于父级(或绝对值,具体取决于您的需求)定位,并提供一个最大值并删除margin-top
属性,例如:
.inner {
position:relative;
top:50px;
...
}
这对你有帮助吗?:
document.getElementById("innerDiv").offsetTop;
或者使用jquery偏移方法:
offset()方法允许我们检索元素。与.position()相比,其检索相对于偏移父对象的当前位置。在全局的现有元素之上定位新元素时操纵(特别是用于实现拖放),.offset()更有用。
它警告0,这是100%正确的,因为当您使用top来定位元素时,top只返回0以外的值,但这里您使用边距和填充来定位元素,所以使用它们来获得顶部距离。像
$(document).ready(function () {
$('.inner').mousedown(function (e) {
alert($(this).css("margin-top"));
})
})
如果你想使用位置,那就
.inner
{ position:absolute;
width:50px;
height:50px;
top: 50px;
border:1px solid red;
}
然后进行正常的编码
相关文章:
- position 是 JavaScript 或 jQuery 中的一个数组
- jQuery控制台错误:无法读取属性'top'的未定义
- Jquery scrollTop动画不工作"无法读取属性'top'无风
- 使用javascript动态计算top属性
- 使用W3C Geolocation返回的Position
- 将 jquery .position() 转换为 google maps latlng
- SharePoint Javascript - Tabs absolute top;如何插入上面的图像
- scrollTop vs getBoundingClientRect().top
- 无法仅在活动服务器上读取未定义错误的属性“top”
- 正在尝试滚动页面:未捕获类型错误:无法读取属性'top'的未定义
- Window.parent and Window.top returning null
- top.window.location在IE中不起作用
- jQuery position()/offset()值在重载时出错(chrome)
- offset()-top-XX在Webkit v Firefox/IE中给出了不同的结果
- 在JointJS中,元素如何访问position、inPorts和outPorts
- jQuery和Javascript:offset.top()没有响应
- jQuery position().top返回0,而不是实际值
- 'position().top'为null或不是对象
- position().top inconsistencies when (zoom < 1)
- jQuery$(this).position().top在Chrome中不起作用