Từ ví dụ của bạn:
$('ul li'); // Returns all 3 li's
// <li> Parent ... </li>
// <li> child1 </li>
// <li> child2 </li>
$('ul li:first'); // Returns the first li of all matching li's from above
// <li> Parent ... </li>
Giả sử chúng ta có tất cả ba kết quả từ bộ chọn đầu tiên $("ul li")
thì :first-child
sẽ lọc ra bất kỳ yếu tố từ danh sách đó mà không phải là đứa trẻ đầu tiên của nó là mẹ . Trong trường hợp này, <li> child2 </li>
bị lọc ra vì đó là con thứ hai của số <ul>
.
$('ul li:first-child'); // Returns all li's that are the first child of any ul
// <li> Parent .. </li>
// <li> child1 </li>
Ngoài ra, đối với bộ chọn đầu tiên, phần tử phải là con đầu tiên trong DOM và không nằm trong tập kết quả jQuery. Ví dụ: với cấu trúc đã cho:
<div>
<h1>First</h1>
<span>Second</span>
<span>Third</span>
</div>
truy vấn dưới đây sẽ mang lại 0 kết quả là <span>
không phải là con đầu tiên của div.
$("div span:first-child")
Một cách tốt để hiểu first-child
sẽ phải suy nghĩ về nó như một bộ lọc sẽ lọc ra bất kỳ phần tử trong tập hợp kết quả hiện tại, nếu nó không phải là đứa trẻ đầu tiên của công ty mẹ của nó.
Tôi đặt cược nó không thực sự đem lại cho bạn kết quả tương tự. – Pointy
vâng bạn có thể viết tôi chắc chắn làm điều gì đó sai ở đây :-) –
Nó có thể xuất hiện để cung cấp cho cùng một kết quả nếu bạn đã làm một cái gì đó như 'jQuery ('ul li: first-child'). Html()', chỉ hiển thị HTML của kết quả * đầu tiên *, mặc dù có hai. – user113716