Javascript 如何获取其父元素的子元素的左侧和顶部位置

Javascript 如何获取其父元素的子元素的左侧和顶部位置,javascript,jquery,html,dom,Javascript,Jquery,Html,Dom,我有一个div元素的父子结构(父元素是名为dartboard的div,子元素是rotatingDiv,然后子元素是crosshair) 镖靶容器包含一个旋转容器(rotaingDiv),该容器随后包含一个子元素(十字线)。我想找到与镖靶容器相关的x和y位置。以下是我目前的情况: $('#dartboard').append( $('#rotatingDiv').append( $('#crosshair') ) ); X = $('#crosshair').position()

我有一个div元素的父子结构(父元素是名为dartboard的div,子元素是rotatingDiv,然后子元素是crosshair)

镖靶容器包含一个旋转容器(rotaingDiv),该容器随后包含一个子元素(十字线)。我想找到与镖靶容器相关的x和y位置。以下是我目前的情况:

$('#dartboard').append( $('#rotatingDiv').append( $('#crosshair') ) );

        X = $('#crosshair').position().left.toFixed(1) 
        Y = $('#crosshair').position().top.toFixed(1) 

console.log("x is "+X+", y is "+Y);
这个过程在每秒一个计时器内运行,在检查x和y值时,我注意到我只接收到与rotatingDiv内的十字线元素相关的信息,而不是在镖靶级别(父级的父级)。有人知道我怎么做吗?

试试这个:

var parentLeft = $('#parent').offset().left,
    parentTop = $('#parent').offset().top
    childLeft = $('#child').offset().left,
    childTop = $('#child').offset().top;


// Positions respective to parent
var top = parentTop - childTop,
    left = parentLeft - childLeft;
您也可以使用
位置

这应该可以:

var pos1 = $("#crosshair").position();
var pos2 = $("#crosshair").parent().position(); // or $('#rotatingDiv').position();

var x = (pos1.left + pos2.left ).toFixed(1);
var y = (pos1.top  + pos2.top  ).toFixed(1);
注意:

注意:jQuery不支持获取 隐藏元素或说明设置在上的边框、边距或填充 身体元素


您可以检查。

设置rotatingDiv的静态位置是否为您提供了解决方案?rotatingDiv已设置为静态位置我猜静态元素不会计算position()方法。我目前无法测试它,所以我可能是错的。我不确定,但是如果父元素的父元素是静态的,那么在这里使用offset()可能更准确。我认为,使用offset()应该在所有情况下都有效guess@A.Wolff正确的!谢谢最新答案
var pos1 = $("#crosshair").position();
var pos2 = $("#crosshair").parent().position(); // or $('#rotatingDiv').position();

var x = (pos1.left + pos2.left ).toFixed(1);
var y = (pos1.top  + pos2.top  ).toFixed(1);