2011-01-11 28 views
8

này hoạt động:Cách chọn yếu tố đối sánh tiếp theo?

<a href="#/link1">link1</a> 
<a href="#/link2">link2</a> 
<a href="#/link3">link3</a> 

$("a[href*='#/link1'").next('a[href*="#"]').click(); 

nhưng điều này không:

<a href="#/link1">link1</a><br> 
<a href="#/link2">link2</a><br> 
<a href="#/link3">link3</a><br> 

$("a[href*='#/link1'").next('a[href*="#"]').click(); 

Trên đây kiểm tra các "< br>" tag, không phải là liên kết khớp tiếp theo.

Tôi sẽ làm cách nào để nó hoạt động trong cả hai trường hợp. Tôi muốn chọn yếu tố phù hợp tiếp theo, không phải yếu tố tiếp theo nếu nó khớp với nhau. Có lẽ .next() không phải là phương pháp đúng?

Trả lời

17

Ví dụ thứ hai không nên chọn gì cả. Đọc documentation of next:

Lấy anh chị em ngay lập tức sau mỗi phần tử trong tập hợp các yếu tố phù hợp. Nếu bộ chọn được cung cấp, bộ chọn chỉ truy xuất anh chị em tiếp theo nếu nó phù hợp với bộ chọn đó.

Bạn phải sử dụng nextAll để có được tất cả anh chị em và lọc chúng cho phù hợp:

$("a[href*='#/link1']").nextAll('a[href*="#"]:first').click(); 

Reference: nextAll

+1

Tôi nghĩ rằng OP là nhận thức được sự thiếu hụt của '.next() ', hãy chắc chắn để đọc * toàn bộ * câu hỏi;) –

+0

@ Nick Craver: Tôi thề nó đã được viết * Các ** lựa chọn ở trên ** các'
'tag * ... có lẽ nó chỉ là mơ ước thi nking ... Tôi mệt mỏi;) –

+0

Điều gì xảy ra nếu bạn không sử dụng ": first"? Nó sẽ nhấp vào tất cả các liên kết? – Dave

5

Sử dụng .nextAll():first để có được những anh chị em tiếp theo phù hợp, chứ không phải là anh chị em tiếp theo nếu nó phù hợp với, như thế này:

$("a[href*='#/link1'").nextAll('a[href*="#"]:first').click(); 
Các vấn đề liên quan