2011-03-17 26 views
163

Tôi có một số <div> có nhiều khác <div> s trong đó, mỗi cái ở một mức làm tổ khác nhau. Thay vì cung cấp cho mọi trẻ <div> số nhận dạng, tôi chỉ cần cung cấp cho số nhận dạng gốc <div>. Dưới đây là một ví dụ:Làm thế nào để tìm một phụ huynh với một lớp đã biết trong jQuery?

<div class="a" id="a5"> 
    <div class="b"> 
    <div class="c"> 
     <a class="d"> 
     </a> 
    </div> 
    </div> 
</div> 

Nếu tôi viết một hàm trong jQuery để đáp ứng với lớp d và tôi muốn tìm ID cho mẹ, lớp a, làm thế nào tôi sẽ làm điều này? Tôi không thể chỉ đơn giản là làm $('.a').attr('id'); vì có nhiều lớp a s. Tôi có thể tìm thấy ID của cha mẹ của cha mẹ mình nhưng có vẻ như thiết kế kém, chậm và không đa hình (tôi sẽ phải viết mã khác nhau để tìm ID cho lớp c).

Trả lời

334

Giả sử rằng this.d, bạn có thể viết

$(this).closest('.a'); 

Các closest method trả về cha mẹ trong cùng của nguyên tố của bạn phù hợp với selector.

+0

http://api.jquery.com/closest/ –

+30

Lưu ý rằng có rất ít bắt: Nếu yếu tố bắt đầu của bạn phù hợp với truy vấn, bạn cũng không nhận được phần tử cha nhưng cùng một phần tử thay thế. Điều này có thể có hoặc không có thể là hành vi mong muốn. Nếu không, tôi đề nghị điều này: $ (this) .parent(). Gần nhất ('.a '); – user766304

+1

Rất hữu ích. Tôi luôn luôn sử dụng để làm $ (this). Parent(). Parent(). Parent() và tôi biết có một giải pháp tốt hơn. –

13

Vượt qua một chọn cho hàm jQuery parents:

d.parents('.a').attr('id') 

EDIT Hmm, trên thực tế câu trả lời Slaks là vượt trội nếu bạn chỉ muốn tổ tiên gần nhất mà phù hợp với chọn của bạn.

+1

Đây không phải là phụ huynh trực tiếp. – SLaks

+1

@ Slaks, bạn nói đúng. Cập nhật từ 'parent' thành' parents'. –

4

Bạn có thể sử dụng parents() để có được tất cả phụ huynh có bộ chọn nhất định.

Mô tả: Lấy tổ tiên của mỗi phần tử trong tập hiện tại của hợp yếu tố, tùy chọn lọc bởi một selector .

Nhưng parent() sẽ chỉ nhận được phụ huynh đầu tiên của phần tử.

Mô tả: Lấy mẹ của mỗi phần tử trong tập hiện tại của hợp yếu tố, tùy chọn lọc bởi một selector .

jQuery parent() vs. parents()

Và có .parentsUntil() mà tôi nghĩ sẽ là tốt nhất.

Mô tả: Lấy tổ tiên của mỗi phần tử trong tập hiện tại của hợp yếu tố, lên đến nhưng không bao gồm các yếu tố kết hợp bởi bộ chọn.

+0

Anh ấy chỉ muốn một _single_ cha mẹ, vì vậy anh ta nên gọi 'gần nhất'. – SLaks

+1

Cảm ơn, để sửa chữa, tôi sẽ để câu trả lời của tôi ở đây để cho mọi người biết sự khác biệt và hiểu được từ sai lầm của tôi. –

Các vấn đề liên quan