Home >Web Front-end >Front-end Q&A >what is jquery sibling traversal

what is jquery sibling traversal

青灯夜游
青灯夜游Original
2023-03-20 10:37:551820browse

Siblings have the same parent element; jquery sibling traversal is to use jQuery to traverse the DOM tree to obtain the sibling elements of the specified element. There are 7 sibling traversal methods: 1. siblings(), which can obtain all elements of the same level of the specified element; 2. next(), which can obtain the next sibling element of the element; 3. nextAll(); 4. nextUntil(); 5. prev(), which can obtain the upper-level sibling elements of the element; 6. prevAll(); 7. prevUntil().

what is jquery sibling traversal

The operating environment of this tutorial: windows7 system, jquery3.6 version, Dell G3 computer.

Sibling traversal in jquery

Siblings have the same parent element.

JQuery can traverse the sibling elements of an element in the DOM tree.

Sibling traversal method

In jquery, there are generally seven methods for querying sibling elements: siblings(), next(), nextAll(), nextUntil(), prev(), prevAll(), prevUntil()

  • siblings() method, mainly used to obtain all elements of the siblings of the specified element

  • The next() method is mainly used to obtain the next sibling element of the specified element

  • nextAll() method is mainly used to obtain all the elements of the next sibling element of the specified element

  • nextUntil() method is mainly used to obtain the next sibling element of the specified element. This sibling element must be the element between the specified element and the element set by the nextUntil() method

  • prev() method, mainly used to obtain the upper level sibling elements of the specified element

  • prevAll() method, mainly used to obtain the upper level of the specified element All sibling elements

  • The prevUntil() method is mainly used to obtain the previous sibling element of the specified element. This sibling element must be between the specified element and the element set by the prevUntil() method. Between the elements

we simulate these processes through the code below. In fact, jQuery handles it this way, but it is more rigorous in structure and filtering.

<!DOCTYPE HTML>
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <script src="http://img.mukewang.com/down/540812440001e40e00000000.js" type="text/javascript"></script>
  <script src="js/jquery-3.6.3.min.js"></script>
  <title></title>
</head>
<body>

<button id="test1">jQuery遍历同胞</button>
<button id="test2">模拟遍历同胞</button>

<ul class="level-1">
  <li class="item-i">I</li>
  <li class="item-ii">II
    <ul class="level-2">
      <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 type="text/javascript">


  function dir(elem, dir, until) {
    var matched = [],
      truncate = until !== undefined;
    while ((elem = elem[dir]) && elem.nodeType !== 9) {
      if (elem.nodeType === 1) {
        if (truncate) {
          if (elem.nodeName.toLowerCase() == until || elem.className == until ) {//细节:元素的className不止一个;
            // 添加过滤id?
            break;
          }
        }
        matched.push(elem);
      }
    }
    return matched;
  }


  function nextAll(elem) {
    return dir(elem, "nextSibling");
  }

  function prevAll(elem) {
    return dir(elem, "previousSibling");
  }

  function nextUntil(elem, until) {
    return dir(elem, "nextSibling", until);
  }

  function prevUntil(elem, until) {
    return dir(elem, "previousSibling", until);
  }


  $("#test1").click(function(){
    var item = $(&#39;li.item-ii&#39;);
    alert(item.nextAll()[0].className)
    alert(item.prevAll()[0].className)
    alert(item.nextUntil(&#39;.end&#39;)[0].className)
    alert(item.prevUntil(&#39;.first&#39;)[0].className)
  })

  $("#test2").click(function(){
    var item = document.querySelectorAll(&#39;li.item-ii&#39;)[0]
    alert(nextAll(item)[0].className)
    alert(prevAll(item)[0].className)
    alert(nextUntil(item, &#39;.end&#39;)[0].className)//.end表示是同胞的最后一个元素?
    alert(prevUntil(item, &#39;.first&#39;)[0].className)
  })



</script>

</body>
</html>

How does jquery detect whether there are sibling elements

Checking method:

1. Use siblings() to get all sibling elements of the specified element

指定元素.siblings()

will return a jquery object containing sibling elements.

2. Use the length attribute to get the length of the jquery object

The length obtained by the length attribute is the number of sibling elements

jquery对象.length==0
  • If the number of sibling elements is 0, there are no sibling elements

  • If the number is not equal to 0, there are sibling elements

Example:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<style>
			.siblings,.siblings *{ 
				display: block;
				border: 2px solid lightgrey;
				color: lightgrey;
				padding: 5px;
				margin: 15px;
			}
		</style>
		<script src="js/jquery-3.2.1.min.js"></script>
		<script type="text/javascript">
			$(document).ready(function() {
				$("button").click(function() {
					var len=$("h2").siblings().length;
					if(len==0){
						console.log("h2没有同胞元素"); 
					}else{
						console.log("h2有同胞元素,其个数为:"+len); 
					}
	
				});
			});
		</script>
	</head>
	<body>
		<div class="siblings">div (父)
			<p>p(兄弟元素)</p>
			<span>span(兄弟元素)</span>
			<h2>h2(本元素)</h2>
			<h3>h3(兄弟元素)</h3>
			<p>p(兄弟元素)</p>
		</div>
		<button>检测h2是否有同胞元素</button>
	</body>
</html>

what is jquery sibling traversal

[Recommended learning: jQuery video tutorial, web front-end video]

The above is the detailed content of what is jquery sibling traversal. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn