Sự khác biệt giữa các hàm cha mẹ jQuery (), cha mẹ () và gần nhất ()


184

Tôi đã sử dụng jQuery được một thời gian. Tôi muốn sử dụng parent()bộ chọn. Tôi cũng đã đưa ra các công closest()cụ chọn. Không thể tìm thấy bất kỳ sự khác biệt giữa chúng. Có cái nào không? Nếu có?

Sự khác biệt giữa parent(), parents()và là closest()gì?


6
cha mẹ :::: đi lại 1 bước về với cha mẹ .... :::: cha mẹ ::: đưa ra danh sách tất cả các bậc cha mẹ .... và chỉ trả lại đầu tiên. Tất cả những điều này có thể được sửa đổi với các bộ chọn bổ sung
Muhammad Umer 23/03/13

Câu trả lời:


177

closest()chọn phần tử đầu tiên phù hợp với bộ chọn, lên từ cây DOM. Bắt đầu từ các yếu tố hiện tại và đi lên.

parent() chọn một phần tử lên (tăng cấp đơn) cây DOM.

parents()phương thức tương tự parent()nhưng chọn tất cả các phần tử phù hợp trên cây DOM. Bắt đầu từ yếu tố cha mẹ và đi lên.


10
Không phải .parents()(thay vì .parent()) lấy tất cả các yếu tố sao?
acdcjunior

65
Câu trả lời này thiếu một điểm quan trọng: "Gần nhất" bắt đầu bằng yếu tố hiện tại và đi lên, khi "Cha mẹ" bắt đầu bằng yếu tố cha mẹ và đi lên.
Andrew

194

từ http://api.jquery.com/closest/

Các .parents ().closest () giống nhau ở chỗ cả hai đều đi qua cây DOM. Sự khác biệt giữa hai, mặc dù tinh tế, là đáng kể:

.closest ()

  • Bắt đầu với yếu tố hiện tại
  • Đi lên cây DOM cho đến khi tìm thấy kết quả khớp với bộ chọn được cung cấp
  • Đối tượng jQuery được trả về chứa 0 hoặc 1 phần tử

.cha mẹ()

  • Bắt đầu với phần tử cha
  • Đi lên cây DOM đến phần tử gốc của tài liệu, thêm từng phần tử tổ tiên vào một bộ sưu tập tạm thời; sau đó nó lọc bộ sưu tập đó dựa trên bộ chọn nếu được cung cấp
  • Đối tượng jQuery được trả về chứa zero, one hoặc nhiều phần tử

.cha mẹ()

  • Đưa ra một đối tượng jQuery đại diện cho một tập hợp các phần tử DOM, phương thức .parent () cho phép chúng ta tìm kiếm thông qua cha mẹ của các phần tử này trong cây DOM và xây dựng một đối tượng jQuery mới từ các phần tử phù hợp.

Lưu ý: Các phương thức .parents () và .parent () tương tự nhau, ngoại trừ phương thức sau chỉ di chuyển một cấp độ duy nhất lên cây DOM. Ngoài ra, phương thức $ ("html"). Parent () trả về một tập hợp chứa tài liệu trong khi $ ("html"). Parent () trả về một tập hợp trống.

Dưới đây là các chủ đề liên quan:


8
Anh ấy thực sự đã hỏi về cha mẹ (), không phải cha mẹ ().
ScubaSteve

2
@ScubaSteve: Vui lòng kiểm tra lại câu trả lời với Note.
Naveed

1
The .parents() and .parent() methods are similar, except that the latter only travels a single level up the DOM tree. Also, $("html").parent() method returns a set containing document whereas $("html").parents() returns an empty set.
Naveed

1
@ScubaSteve, yeah, nhưng câu hỏi của cha mẹ () thú vị hơn.
Paul Draper

15

Sự khác biệt giữa hai, mặc dù tinh tế, là đáng kể:

.closest ()

  • Bắt đầu với yếu tố hiện tại
  • Đi lên cây DOM cho đến khi tìm thấy kết quả khớp với bộ chọn được cung cấp
  • Đối tượng jQuery được trả về chứa 0 hoặc 1 phần tử

.cha mẹ()

  • Bắt đầu với phần tử cha
  • Đi lên cây DOM đến phần tử gốc của tài liệu, thêm từng phần tử tổ tiên vào một bộ sưu tập tạm thời; sau đó nó lọc bộ sưu tập đó dựa trên bộ chọn nếu được cung cấp
  • Đối tượng jQuery được trả về chứa zero, one hoặc nhiều phần tử

Từ tài liệu jQuery


13
tôi nghĩ rằng mô tả của bạn .parents () ở đây
Muhammad Umer

1

Có sự khác biệt giữa cả hai $(this).closest('div')$(this).parents('div').eq(0)

Về cơ bản closestbắt đầu khớp phần tử từ phần tử hiện tại trong khi parentsbắt đầu khớp phần tử từ phần tử mẹ (một cấp trên phần tử hiện tại)

See http://jsfiddle.net/imrankabir/c1jhocre/1/

-1

$(this).closest('div')cũng giống như $(this).parents('div').eq(0).


8
Không hoàn toàn, nếu $ (này) cũng là một div.
Frank Fajardo
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.