2010-09-09 31 views
13

Tôi đang tìm cách làm thế nào tôi có thể chọn một phần tử div không phải là phần tử tiếp theo trực tiếp đến phần được "chọn" bởi chức năng nhấp chuột.Jquery Chọn phần tử 2 vị trí hơn nữa - một cách khác để .next(). Next()

<div id="click">(siblings)</div><div>text</div><div id="get this one"></div> 

Bây giờ tôi muốn chọn một ID có id "nhận mã này" - trong mã của tôi, id này không khả dụng. Tất cả các div đều có cùng lớp và không có anh chị em ruột.
Tôi có thể chọn cái thứ ba bằng $(this).next().next() nhưng tôi nghĩ đó không phải là cách tốt nhất để làm điều đó.
Ngoài ra, có thể có div s trước khi được nhấp - vì vậy nó không nhất thiết phải là cái đầu tiên.

Tôi đã thử bộ chọn :nth-child nhưng không tìm thấy giải pháp.
Sau đó tôi cũng có thể muốn chọn thứ 13 sau khi nhấp vào một (hoặc thứ 23, thứ 65 và vv). Điều này có nghĩa là tôi muốn có một giải pháp khá năng động cho vấn đề này.

Nhờ sự giúp đỡ của bạn,
Phil

Trả lời

20

Bạn có thể sử dụng .nextAll() với .eq() cho cách tiếp cận năng động của bạn, như thế này:

$(this).nextAll().eq(1) //0 based index, this would be .next().next() 

này sẽ cho phép bạn để có được n anh chị em về phía trước, mà có vẻ như là những gì bạn đang theo dõi.

+0

Ok, bây giờ tôi cảm thấy như một ideot. Nó rất dễ dàng - và nó hoạt động, tất nhiên. Nó làm cho rất nhiều ý nghĩa rằng tôi ghét tôi vì không nhận được nó làm việc một mình. Nhưng cảm ơn bạn rất nhiều :) – Phil

0

Dường như $(this).parent().find('div').eq(2).attr('id') nên làm việc.

CẬP NHẬT (Added find ('div'))

+0

Điều này sẽ luôn dẫn đến một tập hợp phần tử rỗng, '.parent()' chọn một phần tử duy nhất, không phải là anh chị em :) –

+0

Trước đây, câu trả lời của bạn có nextAll ('eq: 2'). Điều này có hoạt động giống như cách bạn có cho câu trả lời ngay bây giờ không? Có gì khác biệt? – d2burke

+0

@ d2burke - Bạn đang nhận được phần tử thứ 3 trong phụ huynh không có vấn đề gì ... điều này không liên quan đến phần tử * current *, nó chỉ nhận được phần tử thứ 3, bất kể bạn đã nhấp vào cái gì. Ngoài ra câu trả lời của tôi được sử dụng ': eq (1)' cho lần thứ 2, đó là một chỉ số 0 dựa trên :) –

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