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

时间:2015-05-20 11:42:37

标签: javascript jquery html dom

我有一个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内的信息,而不是处于飞镖水平(父母的父母)。有谁知道我怎么能这样做?

2 个答案:

答案 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