Làm cách nào để chọn DIV gốc đầu tiên bằng jQuery?


95
var classes = $(this).attr('class').split(' '); // this gets the current element classes

var classes = $(this).parent().attr('class').split(' '); // this gets the parent classes.

Phụ huynh trong tình huống trên là một ankor.

Nếu tôi muốn nhận DIV gốc đầu tiên là $ (cái này) thì mã sẽ như thế nào?

var classes = $(this).div:parent().attr('class').split(' '); // just a quick try.

* Về cơ bản, tôi muốn nhận các lớp của DIV cha đầu tiên là $ (this).

cám ơn

Câu trả lời:


161

Sử dụng .closest()để duyệt cây DOM lên đến bộ chọn được chỉ định.

var classes = $(this).parent().closest('div').attr('class').split(' '); // this gets the parent classes.

10
parents("div")đang duyệt và trả về tất cả div mẹ mà bạn nên sử dụng .eq(0)sau nó để đảm bảo rằng nó chỉ trả về một div bạn muốn
meo

3
Hãy nhớ rằng việc sử dụng sẽ tốt hơn cho hiệu suất .parents('div').eq(0)- sử dụng công cụ chọn CSS ví đó THEO DÕI của jQuery để lọc chỉ phần tử đầu tiên sẽ giúp bạn tăng hiệu suất một chút - hãy xem phần 'Ghi chú bổ sung' trên jQuery: eq doc
Noah Whitmore

@NoahWhitmore Đã sửa nó. Được sử dụng closest()để nó sẽ không trả lại tất cả cha mẹ ngoại trừ divcha mẹ.
Shef

41

Sử dụng .closest(), lấy phần tử tổ tiên đầu tiên phù hợp với bộ chọn đã cho 'div':

var classes = $(this).closest('div').attr('class').split(' ');

BIÊN TẬP:

Như @Shef đã lưu ý, .closest()sẽ trả về phần tử hiện tại nếu nó cũng là một DIV. Để tính đến điều đó, .parent()trước tiên hãy sử dụng :

var classes = $(this).parent().closest('div').attr('class').split(' ');

5
.closest()sẽ khớp với chính nó nếu $(this)là một phần tử DIV.
Shef

@Shef, đó là thông tin mới đối với tôi, cảm ơn. Tôi đã chỉnh sửa câu trả lời của mình để phản ánh điều này.
Tatu Ulmanen

3
bạn có thể đơn giản sử dụng.parents("div").eq(0)
meo

8

Điều này nhận được cha mẹ nếu nó là một div. Sau đó, nó được lớp.

var div = $(this).parent("div");
var _class = div.attr("class");

1
@meo Đó là những gì câu hỏi yêu cầu.
Daniel West,

3

Hãy giữ nó đơn giản!

var classes = $(this).parent('div').attr('class');

0

hai trong số những lựa chọn tốt nhất là

$(this).parent("div:first")

$(this).parent().closest('div')

và tất nhiên bạn có thể tìm thấy người theo học bằng cách

$(this).parent("div:first").attr("class")

$(this).parent().closest('div').attr("class")
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.