如何从祖先那里获得JQuery的下一个



我想要当前"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")

最新更新