Javascript 使用jquery查找两个元素之间的节点数?
我很难想出一个快速完成一项(看似)简单任务的方法。假设我有以下html:Javascript 使用jquery查找两个元素之间的节点数?,javascript,jquery,Javascript,Jquery,我很难想出一个快速完成一项(看似)简单任务的方法。假设我有以下html: <ul> <li>One</li> <li>Two</li> <li id='parent'> <ul> <li>Three</li> <li> <ul> <li>Four</li>
<ul>
<li>One</li>
<li>Two</li>
<li id='parent'>
<ul>
<li>Three</li>
<li>
<ul>
<li>Four</li>
<li id='child'>Five</li>
</ul>
</li>
<li>Six</li>
</ul>
</li>
</ul>
在本例中,很明显:
child.parent().parent().parent().parent();
将与“父节点”相同。但是我要遍历的列表大小是可变的,所以我需要找到一种方法来确定需要遍历多少个“.parent()”才能到达该父节点。我总是知道孩子和父母在哪里,我只是不知道中间有多少层
是否有任何内置jQuery方法可以执行类似的操作,或者我的最佳选择是使用递归函数获取父节点,检查父节点是否是我想要的节点,如果不是,则对其父节点调用自身
编辑:我可能解释得不够清楚。我的问题不是找到父节点,而是找出子节点和父节点之间有多少个节点。在上面的示例中,在子节点和父节点之间有3个节点。这就是我需要查找的数据。试试最近的()函数
这将为您提供ul家长的总数:
var numofuls=$(this).parents('ul').length 尝试最近的()函数
这将为您提供ul家长的总数:
var numofuls=$(this).parents('ul').length 如果您只想找到家长,请执行以下操作:
child.parents("#parent");
这比做更容易:
child.parent().parent().parent();
或者你需要知道这个号码还有其他原因吗
一个简单的循环可以做到这一点:
var node = child[0];
var depth = 0;
while (node.id != 'parent') {
node = node.parentNode;
depth++;
}
如果您只想访问父级,请执行以下操作:
child.parents("#parent");
这比做更容易:
child.parent().parent().parent();
或者你需要知道这个号码还有其他原因吗
一个简单的循环可以做到这一点:
var node = child[0];
var depth = 0;
while (node.id != 'parent') {
node = node.parentNode;
depth++;
}
这并没有告诉我中间有多少节点,这是我需要的一段数据。这并没有告诉我中间有多少节点,这是我需要的一段数据。我需要知道数字,因为我想使用它。我需要知道数字,因为我想使用它。