Javascript 如何获取其父元素的子元素的左侧和顶部位置
我有一个div元素的父子结构(父元素是名为dartboard的div,子元素是rotatingDiv,然后子元素是crosshair) 镖靶容器包含一个旋转容器(rotaingDiv),该容器随后包含一个子元素(十字线)。我想找到与镖靶容器相关的x和y位置。以下是我目前的情况: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()
$('#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);