jquery遍历之parent()和parents()的区别及parentsUntil()方法详解

2020-05-17 06:19:18易采站长站整理


其实,parentsUntil()方法,以及nextUntil()方法、prevUntil()方法,原理一样。唯一不同的是nextUntil()是往下,prevUntil()是往上(同辈元素),parentsUntil()也是往上(找祖先元素)


下面看一个例子:

<!DOCTYPE html>
<html>
<head>
  <script type=”text/javascript” src=”/jquery/jquery.js”></script>
</head>


<body>
<ul class=”level-1 yes”>
  <li class=”item-i”>I</li>
  <li class=”item-ii”>II
    <ul class=”level-2 yes”>
      <li class=”item-a”>A</li>
      <li class=”item-b”>B
        <ul class=”level-3″>
          <li class=”item-1″>1</li>
          <li class=”item-2″>2</li>
          <li class=”item-3″>3</li>
        </ul>
      </li>
      <li class=”item-c”>C</li>
    </ul>
  </li>
  <li class=”item-iii”>III</li>
</ul>


<script>
$(“li.item-a”).parentsUntil(“.level-1”).css(“background-color”, “red”);


$(“li.item-2”).parentsUntil( $(“ul.level-1”), “.yes”  )
  .css(“border”, “3px solid blue”);
</script>


</body>

得到结果如下:


分析:

$(“li.item-a”).parentsUntil(“.level-1”).css(“background-color”, “red”);


<ul class=”level-1 yes”> –>不符合。其实它是符合li.item-a的祖先元素的。但是根据parentsUntil()方法定义,是不包括选择器、DOM节点或jquery对象所匹配的元素的
  <li class=”item-i”>I</li>–>不符合,这是它祖先元素的同辈元素。并不是li.item-a的祖先元素。
  <li class=”item-ii”>II  –>符合
    <ul class=”level-2 yes”> –>符合
      <li class=”item-a”>A</li> –>从这开始往上找其祖先元素。
      <li class=”item-b”>B