Jquery next()问题

6

我有这个:

<div class="selection">
 <a class="current" href="#">1</a>
 <div class="class">text</div>
 <a href="#">2</a>
 <div class="class">text</div>
 <a href="#">4</a>
 <div class="class">text</div>
 <a href="#">5</a>
</div>

我希望能选择在 a.current 后面紧接着的下一个 a 元素。 我已经尝试过这样做,但没有成功。
$(".selection a.current").next("a").hide();

我也尝试过

$(".selection").children("a.current").next("a").hide();

所有的a标签都在.selection的兄弟元素中,因此可以使用next()选择器进行访问。我很好奇,因为当我删除它们之间的div元素时,它确实有效。

如果有人知道为什么这样不起作用,那就太好了;)。

2个回答

11

来自jQuery API浏览器

获取匹配元素集合中每个元素紧邻的后续同胞元素,可选择性地筛选特定选择器匹配的元素。

这不是紧邻的后续同胞元素。你可以尝试使用nextAll并添加:first选择器:

$(".selection a.current").nextAll("a:first").hide();

谢谢,我现在明白了...但还有一件事..如果我想选择前一个a元素(假设选择中的最后一个a具有类current)..该怎么办呢?我尝试过:$(".selection a.current").prevAll("a:first").hide();这样不应该也可以反过来用吗?顺便说一下:我正在尝试构建一个可用箭头键选择的列表。 - Björn
尝试在那种情况下使用 :last 而不是 :first。另外,当答案回答了你的问题时,请确保点击其旁边的复选标记 :) - Matchu

4

尝试:

.nextAll("a:first");

要获取之前的内容:

.prevAll("a:first");

演示在线版: http://jsbin.com/ayasa

1
天啊,我一直希望有一个像 JS Bin 这样的网站,但从未去找过,因为我从未想过这真的会发生。谢谢 :o - Matchu
@Matchu:它非常适合快速编写jQuery示例 :) - Sampson
我刚才在另一个答案中使用了它。现在我的生活开心多了。 - Matchu
恭喜 :) 你会逐渐爱上它的。我相信不久之后他们会发布第二个版本。主要开发者是一位jQuery布道者。 - Sampson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接