Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用jquery查找两个元素之间的节点数?_Javascript_Jquery - Fatal编程技术网

Javascript 使用jquery查找两个元素之间的节点数?

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>

我很难想出一个快速完成一项(看似)简单任务的方法。假设我有以下html:

<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++;
}

这并没有告诉我中间有多少节点,这是我需要的一段数据。这并没有告诉我中间有多少节点,这是我需要的一段数据。我需要知道数字,因为我想使用它。我需要知道数字,因为我想使用它。