jQuery:只给出一个元素ID名称,它如何在dom中找到它相对于其父元素的位置?

时间:2009-10-18 23:34:50

标签: jquery traversal

这个让我难过。

<div id="container">
    <div id="store"></div>
    <div id="contact"></div>
</div>

我正在寻找联系div的位置作为“容器”的孩子。所以,为了更清楚,如果我正在寻找'联系人的位置,我需要jquery返回数字1。

非常感谢任何帮助! 谢谢!

4 个答案:

答案 0 :(得分:2)

您可以尝试以下方式:

$('#contact').prevAll('div').length + 1

就像获得前兄弟姐妹的长度一样。如果你想要一个从零开始的索引,请省略+1。

答案 1 :(得分:0)

var el = document.getElementById("contact");
var i = 0;
while (el.previousSibling != null)
{
   el = el.previousSibling;
   i = i + 1;
}
// i is the index of the item. 

答案 2 :(得分:0)

也许找到父级并遍历子项,直到找到节点,沿途计数。

function findPos(id) {
  var child = $('#' + id), children = child.parent().children();
  for (var i = 0; i < children.length; ++i)
    if (children.get(i) == child) return i;
  throw "makes no sense";
}

当然,您可以将其转换为jQuery方法。

答案 3 :(得分:0)

这样的事情应该有效:

var ids = $("#container").children().map(function(n, i) {
    return n.id;
});

var requiredIndex = jQuery.inArray("contact", ids);