Làm cách nào để chọn phần tử <p>
đầu tiên trong <div>
sau đây với jQuery?jQuery đầu tiên của bộ chọn loại?
<div>
<h1>heading</h1>
<p>How do I select this element with jQuery?</p>
<p>Another paragraph</p>
</div>
Làm cách nào để chọn phần tử <p>
đầu tiên trong <div>
sau đây với jQuery?jQuery đầu tiên của bộ chọn loại?
<div>
<h1>heading</h1>
<p>How do I select this element with jQuery?</p>
<p>Another paragraph</p>
</div>
Giả sử bạn có một tham chiếu đến div
đã:
$(yourDiv).find("p").eq(0);
Nếu p
đầu tiên sẽ luôn là một đứa trẻ trực tiếp của div
, bạn có thể sử dụng children
thay vì find
.
Một số lựa chọn thay thế bao gồm:
$(yourDiv).find("p:eq(0)"); //Slower than the `.eq` method
$(yourDiv).find("p:first");
$(yourDiv).find("p").first() //Just an alias for `.eq(0)`
Lưu ý rằng phương pháp eq
sẽ luôn là cách nhanh nhất để làm điều này. Dưới đây là kết quả của một quick comparison của eq
phương pháp, :eq
selector và :first
selector (Tôi không bận tâm với phương pháp first
kể từ khi nó chỉ là một bí danh của eq(0)
):
$('div p:first')
câu trả lời đã quá viết tắt mà không có câu vô dụng này.
Chỉnh sửa Đây chắc chắn là tùy chọn chậm. Sau khi nhìn vào kiểm tra tốc độ của Jame, có vẻ như bộ chọn jQuery hoạt động tốt nhất khi chúng quay trở lại với bộ chọn css.
@JamesAllardice Tương đương với .irst(), bởi vì cả hai đều khớp với một phần tử duy nhất. Cho dù đó là hiệu ứng mong muốn phụ thuộc vào thách thức của Web_Designer. – Colin
@ Farrell - Vâng, nó bằng '.first' và': first' và ': eq (0)' và ': lt (1)' (có rất nhiều cách viết cùng một thứ với jQuery), nhưng nó nên được nhịn ăn của bó. –
@rkw - Lưu ý rằng ': nth-child' không tương đương và sẽ không hoạt động trong trường hợp này. Bạn có quyền nghĩ rằng các bộ chọn làm việc tốt nhất khi chúng có một CSS tương đương, đặc biệt là trong các trình duyệt hiện đại, bởi vì các phương thức 'querySelector' và' querySelectorAll' có thể được sử dụng thay vì Sizzle. –
$('div p').first()
Nên hoạt động. Tôi nghĩ.
$ ("div p"). First();
hoặc $ ('div p: first');
tham khảo: http://api.jquery.com/first/
Hãy ghi nhớ rằng đầu tiên() chỉ khớp với một yếu tố duy nhất,: selector first-child có thể phù hợp với nhiều hơn một: một cho mỗi phụ huynh.
Bạn hầu như biết câu trả lời (từ tiêu đề bài đăng của mình). Có một bộ chọn trong jQuery được gọi là :first-of-type
. Sử dụng nó để tìm và thêm class cho thẻ p đầu tiên tự động, như vậy:
$("div p:first-of-type").addClass('someClass');
: loại đầu tiên và loại cuối cùng có sẵn từ jQuery 1.9 – Bell
này nên làm việc
$("div p:first-of-type").css("font-size: 10px");
Đoạn mã trên tìm thấy đoạn đầu tiên trong div như @Denver chỉ và thay đổi nó fonts-size
-10px
Dưới đây là một ví dụ giải thích thậm chí thêm về jQuery first-of-type selector
Nice, điều này có vẻ thuyết phục, Cảm ơn bạn! –
Không có vấn đề, vui mừng tôi có thể giúp :) Nếu bạn quan tâm, nhưng một lựa chọn khác sẽ là ': lt (1)'. Tôi gần như chắc chắn nó sẽ chậm hơn so với phương thức '.eq', nhưng đó cũng là một cách khác để đạt được điều tương tự. –
Chà, đó là một sự khác biệt đáng kể. Tôi không hiểu tại sao jQuery lại cho phép: đầu tiên.Trong nền, nó sẽ được chuyển đổi thành: nth-child (1). http://jsperf.com/jq-first-vs-eq/3 Có lý do nào không được thực hiện? – rkw