jQuery Traversing Descendants

เป็นการค้นหา หรือเลือก element ที่อยู่ต่ำกว่าโดยใช้ method

  • children() ค้นหาและคืนค่า element ทั้งหมดที่เป็นลูกโดยตรงของ element ที่เลือก
  • find() ค้นหาและคืนค่า element ทั้งหมดที่อยู่ตำกว่าตามรูปแบบของ DOM three

 

1.children()

<html>
<head>
<style>
.descendants * { 
  display: block;
  border: 2px solid lightgrey;
  color: lightgrey;
  padding: 5px;
  margin: 15px;
}
</style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
  $("div").children().css({"color": "red", "border": "2px solid red"});
});
</script>
</head>
<body>

<div class="descendants" style="width:500px;">div (current element) 
  <p>p (child)
    <span>span (grandchild)</span>   
  </p>
  <p>p (child)
    <span>span (grandchild)</span>
  </p> 
</div>

</body>
</html>

ไฟล์ที่ 1 children()

จากไฟล์ที่ 1 สามารถอธิบายได้ว่า ลูกโดยตรงทั้งหมดของ <div> คือ <p>

ซึ่งกาต้องการค้นหาลูกโดยตรงของ element ที่เลือกและระบุว่าต้องเป็นลูกคนแรกจะต้องเปลี่ยนโค้ดบรรทัดที่ 15 เป็น 

$("div").children("p.first").css({"color": "red", "border": "2px solid red"});

ไฟล์ที่ 1.2 children()

 

2.find()

<html>
<head>
<style>
.descendants * { 
  display: block;
  border: 2px solid lightgrey;
  color: lightgrey;
  padding: 5px;
  margin: 15px;
}
</style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
  $("div").find("span").css({"color": "red", "border": "2px solid red"});
});
</script>
</head>
<body>

<div class="descendants" style="width:500px;">div (current element) 
  <p>p (child)
    <span>span (grandchild)</span>   
  </p>
  <p>p (child)
    <span>span (grandchild)</span>
  </p> 
</div>

</body>
</html>

ไฟล์ที่ 2 find()

จากไฟล์ที่ 2 เป็นการค้นหา element ที่ระบุไว้อย่างชัดเจน ซึ่งหาต้องการค้นหา element ทั้งหมดจะต้องเปลี่ยนโค้ดบรรทัดที่ 15 เป็น 

$("div").find("*").css({"color": "red", "border": "2px solid red"});

ไฟล์ที่ 2.2 find()