如何使用jQuery从祖先中获取下一个

ylamdve6  于 2023-06-22  发布在  jQuery
关注(0)|答案(5)|浏览(205)

我想要当前'a'的下一个'a'元素。当current为2,3,4时,我用$('a. current').nextAll('a')捕获3,4,5,但当current为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>
tkqqtvp1

tkqqtvp11#

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

mrphzbgm2#

试试这个:

var $curr = $('a.current'),
    $next = $curr.next('a');

$next.length || ($next = $curr.parent().next().find('a:first'));

此外,您当前使用的是nextAll,它将返回所有以下a元素,而听起来您只需要后面的第一个a

efzxgjgh

efzxgjgh3#

var next = $(this).index() < $(this).parent().children('a').length-1 ? 
           $(this).next() : 
           $(this).parent().next('li').children('a:first');

FIDDLE

qij5mzcb

qij5mzcb4#

因为.nextAll()只返回匹配元素的兄弟元素
6,7,8,9不是5的兄弟,因为它们在不同的parent(li)
你需要使用jQuery遍历DOM来获取那些a元素。

yvgpqqbh

yvgpqqbh5#

如果你知道你已经到了最后(没有结果),那么你应该能够跳到下一个li并抓住所有后续的锚元素。
Here's how I approached it。我给第五个锚元素一个id,表示它是我的current。如果current目标没有.nextAll()子元素(.size()的值为0),则可以执行以下操作来查找后续的锚元素。

$("#5").parent().next("li").find("a").css("color","grey");​

颜色变化是为了帮助指示发现了哪些元素。看起来你有很多选择之间的选择!

更新:如果你只需要第一个,你可以用:first来捕获它,就像这样update

$("#5").parent().next("li").find("a:first")

相关问题