2010-04-20 7 views
36

Tôi đang cố gắng truy xuất phụ huynh của một phụ huynh của một phần tử (grandparent?) Của cha mẹ là <. Tôi muốn tìm ông bà đó, sau đó tìm một thẻ < b> trong phần tử đó, sau đó lưu trữ văn bản đó dưới dạng biến để xuất bản ở nơi khác trên trang. Tôi đã cố gắng sử dụng hàm parent() nhưng không thành công.jQuery - Lấy phụ huynh cấp thứ hai của một phần tử

Dưới đây là đoạn code tôi đã cố gắng:

$('.mixPlayCell a').click(function() { 
     var title = $(this).parent().get(0).parent().get(0).text(); 
     alert(title); 
    }); 
+0

Tôi không nghĩ rằng bạn hiểu những gì '.get()' không. –

+4

Tôi chắc chắn là không. Mọi thứ tôi làm trong jQuery đều đoán và kiểm tra ... Bạn có thể giải thích được không? –

+0

Vì 'parent()' trả về một bộ sưu tập chỉ với một phần tử, bạn có thể trực tiếp gọi hàm tiếp theo trên đó. 'Get (0)' là ẩn. –

Trả lời

37

thử:

$(this).parent().parent().find('.thingtofind').text(); 
+0

Tôi nghĩ rằng tôi đã thử điều đó, nhưng tôi đoán là không! Hoạt động tuyệt vời, cảm ơn. –

+1

Xem [link] http://stackoverflow.com/questions/1108971/jquery-parent-select-more-efficent-way để sử dụng nhanh hơn và trang nhã hơn thay vì sử dụng .parent(). Parent() .... – dzona

2
$('.mixPlayCell a').click(function() { 
    elem = $(this).parent().parent(); 
    title = $("tag selector goes here",elem).html(); 
}); 

Something như thế này?

+0

+1, .get (0) là không cần thiết và trả về đối tượng DOM, không có các phương thức jQuery. [Xem tại đây] (http://static.bwerp.net/~adam/2010/04/20/parent.html). –

0
$(this).parent().parent().find('mytag').text() 

Chỉ hoạt động tốt.

Bạn có thể sử dụng bất kỳ công cụ chọn nào trong phương thức find. Nếu bạn chỉ cần tìm kiếm trong phần tử con trực tiếp của phần tử của ông bà, bạn cũng có thể sử dụng $.children thay vì find tìm kiếm trong tất cả các phần tử con của phần tử đó.

1

Chỉ có 1 phụ huynh, không cần phải .get (0)

var title = $(this).parent().parent().find("whateveryouwant").html(); 
46

Đối với việc lựa chọn cha mẹ thứ hai

parents(':eq(1)') 

trông mượt mà hơn

parent().parent() 

Ngoài ra, bạn có thể thấy rằng

closest('ul') 

phù hợp với công việc tốt hơn.

-1

Hãy thử điều này thực hiện rất đơn giản:

$('.mixPlayCell a').click(function() { 
    var title = $(this).parents().text(); 
    alert(title); 
}); 

Chỉ cần thay đổi .parent() với một .parents()

đây là tác phẩm cho mỗi phiên bản jQuery.

5

parents() trả về một danh sách, vì vậy công trình này:

$(this).parents()[1];