Hàm :nth-child() Selector trong jQuery - JQuery API
Cú pháp jQuery( ":nth-child(index)" )
:nth-child() Selector sẽ chọn tất cả các phần tử con thứ n nào đó trong các phần tử cha với n là số được cung cấp như một tham số khi gọi selector.
Không giống như các index-related selectors (:eq(), :lt(), :gt(), :even, :odd), do sự thực thi :nth-child() Selector bắt nguồn từ CSS nên giá trị của n sẽ bắt đầu từ 1 (các index-related selectors đầu từ 0).
Các bạn cần lưu ý để tránh bị nhầm lẫn giữa :nth-child(n) và :eq(n), mặc dù kết quả của chúng khác nhau khá nhiều. Điều đầu tiên mình đã đề cập ở trên, :nth-child(n) sẽ bắt đầu từ 1 còn :eq(n) sẽ bắt đầu từ phần tử 0. Thứ hai là cách hoạt động của chúng, trong khi :nth-child(n) sẽ chọn phần tử thứ n trong tất cả các phần tử con của selector đặt trước nó, thì :eq(n) sẽ chọn phần tử thứ n-1 trong các kết quả trả về của selector đặt trước nó. Các bạn nên xem ví dụ để hiểu rõ hơn.
Cú pháp
jQuery( ":nth-child(index)" )
Trong đó:
- index là chỉ số của phần tử muốn chọn bắt đầu từ 1, index cũng có thể là chuỗi odd, even hoặc một phép tính toán học(
:nth-child(even),:nth-child(4n)).
Ví dụ
Tìm kiếm các thẻ li mô tả thời gian của khóa học(thẻ thứ 3 trong số các thẻ con của thẻ ul) và định dạng cho chúng:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Học lập trình miễn phí tại Zaidap.com.net</title>
<script src="https://Zaidap.com.net/cnd/js/jquery/jquery-3.2.1.min.js"></script>
</head>
<body>
<h1>Học lập trình miễn phí tại Zaidap.com.net</h1>
<ul class="freetut">
<h3>Khóa học 1</h3>
<li> Name: PHP</li>
<li>Time: 48 Videos</li>
<li>Author: Nguyễn Văn A</li>
</ul>
<ul class="freetut">
<h3>Khóa học 2</h3>
<li> Name: HTML</li>
<li>Time: 28 Videos</li>
<li>Author: Nguyễn Văn B</li>
</ul>
<button onclick="myFunction()">Click vào đây để xem kết quả</button>
<script>
function myFunction(){
$( ".freetut li:nth-child(3)" ).css( "color", "red");
}
</script>
</body>
</html>Kết quả:
Ví dụ 2: Ta sẽ cùng so sánh kết quả khi sử dụng :nth-child(n) và :eq(n) để tìm ra sự khác biệt:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Học lập trình miễn phí tại Zaidap.com.net</title>
<script src="https://Zaidap.com.net/cnd/js/jquery/jquery-3.2.1.min.js"></script>
</head>
<body>
<h1>Học lập trình miễn phí tại Zaidap.com.net</h1>
<ul id="nth-child">
<h3>Khóa học 1</h3>
<li> Name: PHP</li>
<li>Time: 48 Videos</li>
<li>Author: Nguyễn Văn A</li>
</ul>
<ul id="eq">
<h3>Khóa học 2</h3>
<li> Name: HTML</li>
<li>Time: 28 Videos</li>
<li>Author: Nguyễn Văn B</li>
</ul>
<button onclick="myFunction()">Click vào đây để xem kết quả</button>
<script>
function myFunction(){
$( "#nth-child li:nth-child(2)" ).css( "color", "red");
$( "#eq li:eq(2)" ).css( "color", "blue");
}
</script>
</body>
</html>Như các bạn có thể thấy, cùng một chỉ số n=2 nhưng hai selector cho ra kết quả hoàn toàn khác nhau, mình hi vọng các bạn sẽ không bao giờ nhầm lẫn giữa 2 selector này sau khi đọc xong bài viết này :D.
Kết quả:
Tham khảo: jquery.com
Nguồn: Zaidap.com.net