2010-10-13 28 views
6

Hay, Tôi có một số đánh dấu như thế nàyjQuery chaining parent(), có cách nào dễ hơn không?

<div id="some-id"> 
    <h2><a href="#">Title</a></h2> 
</div> 

và một số jQuery như thế này

$(this).parent().parent().attr("id") 

$ (này) được đề cập đến 'a' thẻ trong 'h2'

Có cách nào dễ dàng hơn để chọn div cha mẹ mà không sử dụng parent() hai lần. Tôi đã thử

$(this).parent("div").attr("id") 

nhưng nó không hoạt động.

Cảm ơn

Trả lời

14

Bạn có thể sử dụng .closest(), như thế này:

$(this).closest("div").attr("id") 

You can test it here. .parent("div") không phải là trực quan như có vẻ như, nó được chỉ các ngay mẹ nếu nó phù hợp với selector, .closest() trèo cha mẹ cho đến khi nó phù hợp với selector.

Xin lưu ý rằng (không áp dụng cho ví dụ này) nếu this phù hợp với chọn, nó sẽ trả rằng phần tử, nó không bắt đầu với phụ huynh đầu tiên, nó bắt đầu với chính nó.

+0

.Losos() chỉ di chuyển lên? Hay nó cũng sẽ di chuyển xuống? – dotty

+0

@dotty - Nó chỉ đi với cha mẹ, nếu bạn muốn tìm trẻ em sử dụng '.find()', mặc dù bạn chỉ có thể có một đường dẫn cha mẹ, trẻ có thể có nhiều nhánh ... do đó phụ thuộc vào những gì bạn đang theo sau. –

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