jquery, tìm phần tử tiếp theo theo lớp


102

Làm cách nào để tìm phần tử tiếp theo theo lớp.

tôi đã thử với $(obj).next('.class');nhưng điều này chỉ trả về các lớp trong $(obj)cha. Tôi cần lấy phần tử tiếp theo ở bất kỳ đâu trong suốt mã theo tên lớp. Bởi vì mã của tôi trông giống như

<table>
<tr><td><div class="class">First</div></td></tr>
<tr><td><div class="class">Second</div></td></tr>
</table>

Điều này có khả thi không?

Câu trả lời:


145

Trong trường hợp này, bạn cần phải sử dụng <tr> then.next() , như sau:

$(obj).closest('tr').next().find('.class');

Hoặc nếu có thể có các hàng ở giữa mà không có hàng .classbên trong, bạn có thể sử dụng .nextAll(), như sau:

$(obj).closest('tr').nextAll(':has(.class):first').find('.class');

Sẽ dễ dàng hơn để làm điều này: $ (obj) .closest ('tr'). NextAll ('. Class') [0];
StuR

2
@StuR - điều đó sẽ không hoạt động ở đây, vì .nextAll () chỉ xem xét các phần tử anh em. Bạn cần một cái gì đó xem xét con cháu để tìm <div> tiếp theo mà câu hỏi muốn.
Nick Craver

1
Và điều gì sẽ xảy ra nếu bạn muốn lấy một thuộc tính từ HTMLObject đó được trả về? Thích an$(obj).closest('tr').nextAll('.class')[0].attr('data-attribute');
Dennis Braga

Bạn cũng có thể cần phải sử dụng: . .Parent () tiếp theo ( "") nếu phần tử không có anh chị em
shasi kanth

@NickCraver Bạn thật tuyệt vời
THÁNH THẦN THÁNH

23

Để tìm phần tử tiếp theo có cùng lớp:

$(".class").eq( $(".class").index( $(element) ) + 1 )

13

Bạn không thể sử dụng next () trong trường hợp này, nếu bạn xem tài liệu cho biết:
Next () Lấy ngay phần tử sau của mỗi phần tử trong tập hợp các phần tử đã so khớp. Nếu một bộ chọn được cung cấp, nó sẽ truy xuất anh chị em kế tiếp phù hợp với bộ chọn.

vì vậy nếu DIV thứ hai có cùng TD thì bạn có thể viết mã:


// Won't work in your case
$(obj).next().filter('.class');

Nhưng vì nó không phải, tôi không thấy có điểm nào để sử dụng next (). Thay vào đó, bạn có thể viết mã:

$(obj).parents('table').find('.class')


6
Nhưng làm thế nào nó tìm thấy phần tử tiếp theo. .find sẽ trả về tất cả các phần tử.
Shashwat Kumar
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.