我的dom层次结构中有一个父div,父div中有大约100个子元素。我在每个子元素上绑定了一个click事件。我想要的是从父元素顶部的子元素的位置。我使用了jquery .position
和.offset
,但两者都从页面顶部返回位置。父div是可滚动的,这意味着隐藏了offlow。所以从点击元素的位置减去顶部位置是行不通的!任何人都可以建议我解决这个问题!
答案 0 :(得分:3)
将position: relative;
样式添加到父元素:
<强> HTML:强>
<div style="position: relative">
<div style="position: absolute; top: 200px; left: 200px;" id="clicker">Click Me</div>
</div>
<强>使用Javascript:强>
$(function() {
$("#clicker").click(function() {
var $clicker = $(this);
var pos = $clicker.position();
console.log(pos.top);
console.log(pos.left);
});
});
答案 1 :(得分:2)
.offset()
返回相对于文档的位置,而.position()
返回相对于偏移父项的位置。 .position()
将是您想要的,但您需要父母“定位”(position
以外的static
,relative
,fixed
或absolute
)。否则,最近的父母将是文档本身,.position()
将像.offset()
将position:relative
添加到您想要基于元素位置的父级。