我有一个div元素的父子结构(parent是一个名为dartboard的div,一个名为rotatingDiv的子div,然后有一个名为crosshair的子元素)。
dartboard
> roatingDiv
> 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值时,我注意到我只收到关于十字准线元素在rotateDiv内的信息,而不是处于飞镖水平(父母的父母)。有谁知道我怎么能这样做?
答案 0 :(得分:1)
试试这个:
$found=0;
function find_key_value($v, $k)
{
global $area,$tool,$found;
if (($k==$area->pivot->id)&&($v==$tool->id))
$found=1;
}
array_walk_recursive($areastools, 'find_key_value');
您也可以使用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;
。
答案 1 :(得分:0)
这应该有效:
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不支持获取位置坐标 隐藏元素或考虑边框,边距或填充设置 身体元素。
您可以查看API here。