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

jQuery:给定一个元素ID名称,它如何找到它在dom中相对于其父元素的位置?,jquery,traversal,Jquery,Traversal,这件事把我难住了 <div id="container"> <div id="store"></div> <div id="contact"></div> </div> 我正在寻找作为“容器”之子的联系人部门的职位。所以更清楚的是,如果我在寻找联系人的位置,我需要jquery返回数字1 非常感谢您的帮助! 谢谢 可能会找到父节点并遍历子节点,直到找到节点为止,一路计数 function findPos(

这件事把我难住了

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

我正在寻找作为“容器”之子的联系人部门的职位。所以更清楚的是,如果我在寻找联系人的位置,我需要jquery返回数字1

非常感谢您的帮助!
谢谢

可能会找到父节点并遍历子节点,直到找到节点为止,一路计数

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";
}
函数findPos(id){
var child=$('#'+id),children=child.parent().children();
对于(变量i=0;i

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

您可以尝试以下方法:

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

如中所示,获取上一个div同级的长度。如果需要从零开始的索引,请省略+1。

类似的方法应该可以:

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

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

@nickf-你说得对,我最初以为他希望从1开始,但我刚刚根据你的评论重新阅读了这个问题。不管怎么说,我已经编辑过了。效果非常好,不必离开jquery!完美的
var ids = $("#container").children().map(function(n, i) {
    return n.id;
});

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