Jquery traversing

Jquery traversing là gì

jQuery traversing nghĩa là bạn dùng các hàm của jquery để di chuyển qua lại giữa các tag trong trang HTML Việc di chuyển để làm gì? Để đến được tag bạn cần, chọn nó và ra 1 hành động gì đó. Nhờ có các hàm traversing của jquery, bạn có thể chọn được các tag cần thiết để hành động ngay cả khi chúng không có đặc tính gì nổi bật trong tài liệu html.

Với jQuery traversing, bạn có thể di chuyển lên cấp trên(ancestors) – cha ông, hoặc xuống dưới (descendants) – cấp con cháu, hoặc đến các tag ngang hàng (siblings) – cấp anh em … trong cấu trúc tag của tài liệu HTML, tính từ tag bạn chọn đầu tiên.

jQuery Tranversing examp;le
  • Tag <div> là cha của <ul>, là là cấp trên (ancestor) của các tag bên dưới
  • Tag <ul> là cha của 2 tag <li> và là con của <div>
  • Tag <li> bên trái là cha của 2 tag <span>, con của <ul> là là cháu (descendant) của <div>
  • Hai tag <span> là con của <li> bên trái là là cháu (descendant) của <ul> và <div>
  • Hai tag <li> là anh em  (siblings) của nhau, do cùng chung 1 cha (parent)
  • Tag <li> bên phải là cha của <b>, con của <ul> và là cháu (descendant) của div <div>
  • Tag <b> là con của <li> bên phải và cháu (descendant) của <ul> và <div>

Các hàm jquery traversing

Method Description
add() Bổ sung thêm phần tử vào phần tử được chọn
children() Chọn các phần tử con trực tiếp của phần tử đang chọn
closest() Returns the first ancestor of the selected element
contents() Returns all direct children of the selected element (including text and comment nodes)
each() Lặp qua các tag đã chọn
eq() Chọn phần tử theo chỉ số
filter() Lọc các phần tử khớp  điều kiện với selector
find() Tìm các tag con cháu phù hợp với selector
first() Chọn phần tử đầu tiên phù hợp với selector
has() Returns all elements that have one or more elements inside of them
is() Checks the set of matched elements against a selector/element/jQuery object, and return true if at least one of these elements matches the given arguments
last() Chọn phần tử cuối cùng phù hợp với selector
next() Chọn phần tử kế với phần tử được chon
nextAll() Returns all next sibling elements of the selected element
nextUntil() Returns all next sibling elements between two given arguments
not() Returns elements that do not match a certain criteria
offsetParent() Returns the first positioned parent element
parent() Chọn phần tử cha của phần tử được chọn
parents() Chọn tất cả cha – ông của phần tử được chọn
parentsUntil() Chọn tác taReturns all ancestor elements between two given arguments
prev() Chọn phần tử anh em ở trước phần tử đang chọn
prevAll() Returns all previous sibling elements of the selected element
prevUntil() Returns all previous sibling elements between two given arguments
siblings() Chọn các phần tử anh em với phần tử được chọn
slice() Reduces the set of matched elements to a subset specified by a range of indices

jQuery Traversing – Filtering

Hàm first() trong jquery

Hàm first()giúp chọn phần tử đầu tiên phù hợp với selector

<script>
$(document).ready(function(){
  $(".row p").first().css("text-transform", "uppercase");
});
</script>

https://www.w3schools.com/jquery/tryit.asp?filename=tryjquery_traversing_first

Hàm last() trong jquery

Hàm last()giúp chọn phần tử sau cùng phù hợp với selector

<script>
$(document).ready(function(){
  $(".row p").last().css("text-transform", "uppercase");
});
</script>

https://www.w3schools.com/jquery/tryit.asp?filename=tryjquery_traversing_last

Hàm eq() trong jquery

Hàm eq() giúp bạn chọn phần tử theo chỉ số

<script>
$(document).ready(function(){
  $(".row").eq(2).css("background-color", "yellow");
});
</script>

https://www.w3schools.com/jquery/tryit.asp?filename=tryjquery_traversing_eq

Hàm filter() trong jquery

Hàm filter() trong jquery dùng để chọn phần tử thỏa điều kiện trong các các phần tử được chọn

<script>
$(document).ready(function(){
  $("p").filter(".td").css("color","red");
  $("p").filter(".td").parent().css("background-color","yellow");
});
</script>

https://www.w3schools.com/jquery/tryit.asp?filename=tryjquery_traversing_filter

jQuery Traversing – Descendants

Hàm children() trong jquery

Hàm children()giúp chọn các phần tử con trực tiếp của phần tử đang chọn

<script>
$(document).ready(function(){
  $(".row").children().css("font-weight", "700");
  $(".row").last().children("p").css("background-color", "lightblue");
});
</script>

https://www.w3schools.com/jquery/tryit.asp?filename=tryjquery_traversing_children

Hàm find() trong jquery

Hàm find()giúp chọn phần tử là cháu của phần tử đang chọn

<script>
$(document).ready(function(){
  $(".row").eq(2).find("a").css("color", "red");
});
</script>

https://www.w3schools.com/jquery/tryit.asp?filename=tryjquery_traversing_find

jQuery Traversing – Ancestors

Hàm parent() trong jquery

Hàm parent() trong jquery dùng để chọn phần tử cha của phần tử đang chọn

<script>
$(document).ready(function(){
  $("a[idTin='749']").parent().css({"background-color": "lightgreen","padding":"8px"});
  $("a[idTin='749']").parent().parent().css({"border": "solid 1px #03c","cursor":"pointer"});
});
</script>

https://www.w3schools.com/jquery/tryit.asp?filename=tryjquery_traversing_parent

Jquery Traversing – Siblings

Hàm next() trong jquery

Hàm next()giúp chọn phần tử kế tiếp của phần tử đang chọn

<script>
$(document).ready(function(){
  $("[idTin='755']").next().css("background-color", "lightcyan");
});
</script>

https://www.w3schools.com/jquery/tryit.asp?filename=tryjquery_traversing_next

Hàm prev() trong jquery

Hàm prev()giúp chọn phần tử anh em ở trước phần tử đang chọn

<script>
$(document).ready(function(){
  $("[idTin='718']").prev().css("background-color", "lightgreen");
});
</script>

https://www.w3schools.com/jquery/tryit.asp?filename=tryjquery_traversing_prev

Hàm siblings() trong jquery

Hàm siblings() trong jquery dùng để chọn phần tử anh em với phần tử đang chọn

<script>
$(document).ready(function(){
  $("div[idTin='758']").siblings().css({"border": "solid 1px #03c","margin":"10px"});
});
</script>

https://www.w3schools.com/jquery/tryit.asp?filename=tryjquery_traversing_siblings

Các hàm khác

Hàm add() trong jquery

Hàm add() trong jquery giúp bổ sung thêm phần tử vào phần tử được chọn

<script>
$(document).ready(function(){
  $("span").add("em").css("color", "red");
});
</script>

https://www.w3schools.com/jquery/tryit.asp?filename=tryjquery_traversing_add

Code HTML học jquery traversing

 <meta charset="UTF-8"><title>TIN TỨC ONLINE</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<body>
<div id="ttl">
  <div> Trang chủ > Tin xã hội > Thể thao </div>
  <div class="row" idTin="758">
    <p> Brazil sẽ ra quân bằng đội hình siêu tấn công </p>
    <span>đăng:: 02/07/2011 </span><em>Xem: 102 </em>
    <p> HLV trưởng Menezes tiết lộ sử dụng một tiền  vệ công và ba tiền đạo khi Brazil đá trận mở màn bảng B Copa America 
      2011 với Venezuela hôm nay (sáng mai 3/6, Hà Nội). </p>
    <p> <a href="#" idTin="758">Xem chi tiết</a> </p>
  </div>
  <div class="row" idTin="755">
    <p> Argentina gây thất vọng trong trận ra quân Copa America </p>
    <span>đăng:: 02/07/2011. </span><em>Xem: 90 </em>
    <p> Dàn sao đẳng cấp thế giới của đội tuyển chủ nhà Argentina đã có màn trình diễn thiếu thuyết phục và bị Bolivia cầm 
      chân 1-1 trong trận khai mạc sáng thứ bảy, theo giờ Việt Nam. </p>
    <p> <a href="#" idTin="755">Xem chi tiết</a> </p>
  </div>
  <div class="row">
    <p> Kỳ thủ Lê Quang Liêm lên top 30 thế giới </p>
    <span>đăng:: 02/07/2011. </span><em>Xem: 60 </em>
    <p> (NLĐO) - Liên đoàn cờ vua thế giới (FIDE) vừa công bố bảng xếp hạng các kỳ thủ trong hai tháng qua, kỳ thủ Lê Quang 
      Liêm đã “nhảy một mạch” từ hạng 49 lên hạng 27 thế giới. </p>
    <p> <a href="#" idTin="749">Xem chi tiết</a> </p>
  </div>
  <div class="row" idTin="718">
    <p> De Gea hoàn thành cuộc kiểm tra y tế tại M.U </p>
    <span>đăng:: 28/06/2011. </span><em>Xem: 30 </em>
    <p> Hôm qua 27.6, thủ thành De Gea của Atletico và U21 Tây Ban Nha đã hoàn tất những thủ tục kiểm tra y tế để 
      chuyển sang thi đấu cho MU với mức giá 17,8 triệu bảng. </p>
    <p> <a href="#" idTin="718">Xem chi tiết</a> </p>
  </div>
  <div class="row" idTin="693">
    <p class="td"> Lội ngược dòng thần kỳ, Mexico vô địch Gold Cup 2011 </p>
    <span>đăng:: 27/06/2011. </span><em>Xem: 109 </em>
    <p> Bất chấp việc bị đội tuyển Mỹ sớm vượt lên dẫn trước 2-0, Mexico vẫn không buông xuôi và đã thực hiện một 
      màn lội ngược dòng thần kỳ, ghi liền 4 bàn để giành chức vô địch Gold Cup 2011. </p>
    <p> <a href="#" idTin="693">Xem chi tiết</a> </p>
  </div>
  <div class="row" idTin="665">
    <p> “Real sẽ hết cửa vô địch nếu Barca có Alexis Sanchez” </p>
    <span>đăng:: 25/06/2011. </span><em>Xem: 110 </em>
    <p> (Dân trí) - Đó chính là lời khẳng định của chủ tịch Udinese, Giampaolo Pozzo về giá trị mà ngôi sao người Chile có 
      thể mang đến cho Barca. Bên cạnh đó, ông cũng kiên quyết “hét” cái giá 50 triệu euro cho hảo thủ 22 tuổi này. </p>
    <p> <a href="#" idTin="665">Xem chi tiết</a> </p>
  </div>
  <div class="row" idTin="664">
    <p class="td"> Có Ashley Young, MU vẫn muốn giữ lại Nani </p>
    <span>đăng:: 25/06/2011.</span><em>Xem: 140 </em>
    <p> (Dân trí) - Mặc dù vừa mang về sân Old Trafford chuyên gia chạy cánh A.Young nhưng BLĐ MU vẫn cho biết họ không
      hề có ý định bán Nani. >> Bayern Munich tính “giải cứu” Nani khỏi Old Trafford </p>
    <p> <a href="#" idTin="664">Xem chi tiết</a> </p>
  </div>
  <div class="row" idTin="663">
    <p> Villas Boas và những thay đổi nhân sự ở Chelsea </p>
    <span>đăng:: 25/06/2011. </span><em>Xem: 420 </em>
    <p> (Dân trí) - Được chủ tịch Abramovich trả 13,2  triệu bảng để phá vỡ hợp đồng với Porto, Villas Boas được kỳ vọng sẽ 
      mang lại thành công cho Chelsea. Ngay từ lúc này, ông đã tính tiêu tiềm rầm rộ bằng những bản hợp đồng mới. </p>
    <p> <a href="#" idTin="663">Xem chi tiết</a> </p>
  </div>
  <div class="row" idTin="640">
    <p> Falcao đã đạt được thỏa thuận lương với Chelsea </p>
    <span>đăng:: 24/06/2011. </span><em>Xem: 421 </em>
    <p> (Dân trí) - Ngày về Stamford Bridge của “Vua  phá lưới” Europa League có vẻ không còn xa khi anh đã đạt được thỏa 
      thuận với Chelsea về mức lương 5 triệu bảng/mùa. </p>
    <p> <a href="#" idTin="640">Xem chi tiết</a> </p>
  </div>
  <div class="row" idTin="639">
    <p> Neymar đồng ý thi đấu cho Real Madrid trong 6 năm tới </p>
    <span>đăng:: 24/06/2011. </span><em> Xem: 274 </em>
    <p> (Dân trí) - “Thần đồng” của bóng đá xứ Samba đã tiến một bước dài tới Bernabeu sau khi nhất trí với Real Madrid về 
      hợp đồng có thời hạn 6 năm. Tất cả vấn đề còn lại sẽ phụ thuộc vào việc thương thảo giữa đội bóng hoàng gia và CLB Santos. </p>
    <p> <a href="#" idTin="639">Xem chi tiết</a> </p>
  </div>
</div></body>