我有以下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;
}
}
});
打开以更改逻辑
答案 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
,它是一个包含两个键的对象:x
和y
。
使用JavaScript:
var mainPosition = document.getElementById("MainDiv").offsetParent;
alert(mainPosition.left + ", " + mainPosition.top);
但是jquery有一个包装器可以用更少代码更丰富的方式来实现这个功能:
var mainPosition = $("#MainDiv").position();
alert(mainPosition.left + ", " + mainPosition.top);