父母div的div位置

时间:2012-02-20 20:28:00

标签: javascript jquery

我有以下html结构。 请在下面的ID中读取“abcd”和“efgh”作为我生成的随机字符串,并附加它以给出唯一的ID。

<div id="MainCanvas">
    <div id="canvas-1">
        <div id="MainDiv-abcd">
            <div id="Manvas-abcd">
            </div>
            <div id="Textdiv-abcd">
            </div>  
        </div>
        <div id="MainDiv-efgh">
            <div id="Manvas-efgh">
            </div>
            <div id="Textdiv-efgh">
            </div>  
        </div>
        ...there are more of the main Divs.
    </div>
    <div id="canvas-2">
    ....same structure as above.
    </div>    
</div>

我的最终目标是遍历所有跨度并获得有关跨距的一些信息。

我现在的代码如下。

var counter = 1;
$('[id^="MainDiv-"]').each(function(i) {
        var spanId = this.id.replace("MainDiv-", "TextDiv-");
        if ($("#" + spanId).length) {
            if ($("#" + spanId).text().trim().length) {
                //here I get the canvas number which is a page in the application
                myPages[counter] = $(this).parent().attr("id").split("-")[1];
                //this is where I need to get the left and top position of the span
                //relative to the canvas
                counter = counter + 1;
            }
        }
    });

打开以更改逻辑

2 个答案:

答案 0 :(得分:0)

您可以获取父级的左侧和顶部偏移量,然后减去您希望获得位置的子项的左侧和上侧偏移量。

这样的事情:

var parent = $("#canvas"),
    child = $("#myspan"),
    parentTop = parent.offset().top,
    parentLeft = parent.offset().left,
    childTop = parent.offset().top,
    childLeft = parent.offset().left,
    childPosTop = parentTop - childTop,
    childPosLeft = parentLeft - childLeft;

childPosTop应包含相对于canvas的孩子的最高偏移量,而childPosLeft应包含相对于canvas的左偏移量。

答案 1 :(得分:0)

DOM节点有一个属性offsetParent,它是一个包含两个键的对象:xy

使用JavaScript:

var mainPosition = document.getElementById("MainDiv").offsetParent;
alert(mainPosition.left + ", " + mainPosition.top);

但是jquery有一个包装器可以用更少代码更丰富的方式来实现这个功能:

var mainPosition = $("#MainDiv").position();
alert(mainPosition.left + ", " + mainPosition.top);