2011-01-11 62 views
8

這工作:如何選擇下一個匹配元素?

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

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

但這並不:

<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(); 

以上測試 「< BR>」 的標籤,而不是下一個匹配的鏈接。

我該如何去使它在兩種情況下都能正常工作。我想選擇下一個匹配的元素,而不是下一個匹配的元素。也許.next()不是正確的方法?

回答

17

第二個例子不應該選擇任何東西。閱讀documentation of next

獲取緊隨其後的每個元素的兄弟在匹配的元素。如果提供了一個選擇器,只有當它與該選擇器匹配時纔會檢索下一個兄弟。

你必須使用nextAll獲得所有兄弟姐妹,因此它們進行過濾:

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

參考nextAll

+1

我覺得OP知道'。接下來的短缺()`,一定要讀* *整個*問題;) – 2011-01-11 19:31:41

5

使用.nextAll():first得到一個匹配的兄弟姐妹,而不是下一個兄弟如果匹配,像這樣:

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