我想要当前"a"的下一个'a'元素。当电流为 2,3,4 时,我用 $('a.current').nextAll('a') 捕获 3,4,5,但是当电流为 5 时,我无法捕捉下一个"a"。如果有人有解决方案...
<div id="slides">
<ul>
<li>
<a href="" class='current'>2</a>
<a href="" >3</a>
<a href="" >4</a>
<a href="" >5</a>
</li>
<li>
<a href="" >6</a>
<a href="" >7</a>
<a href="" >8</a>
<a href="" >9</a>
</li>
</ul>
</div>
var curr = $('a.current'), // get the current
a = curr.closest('ul').find('a'), // get all the "a" elements
idx = a.index(curr), // get the index of the current among all
nextall = a.slice(idx + 1); // slice those greater than the current
现场演示:http://jsfiddle.net/eaXdc/
如果您只想要下一个,请更改以下内容:
a.slice(idx + 1);
对此:
a.eq(idx + 1);
试试这个:
var $curr = $('a.current'),
$next = $curr.next('a');
$next.length || ($next = $curr.parent().next().find('a:first'));
此外,您当前正在使用 nextAll
,它将返回以下所有a
元素,当听起来您只需要第一个后续a
时。
var next = $(this).index() < $(this).parent().children('a').length-1 ?
$(this).next() :
$(this).parent().next('li').children('a:first');
小提琴
因为.nextAll()
只返回匹配元素的同级
6,7,8,9 不是 5 的兄弟姐妹,因为他们处于不同的parent(li)
你需要那些你必须使用 jQuery 遍历 DOM 来获取这些a
元素。
如果你能够知道你处于最后(没有结果),那么你应该能够跳到下一个li
并抓住所有后续的锚元素。
这是我的处理方式。我给第五个锚元素一个 id 来表明这是我的current
。当current
目标没有.nextAll()
子元素(.size()
为 0)时,可以执行以下操作来查找后续定位元素。
$("#5").parent().next("li").find("a").css("color","grey");
颜色更改是为了帮助指示找到了哪些元素。看起来你有很多选择!
更新:如果您只想要第一个,则可以像此更新一样使用:first
名称捕获它。
$("#5").parent().next("li").find("a:first")