2011-01-11 31 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(); 
相关问题