0

我想要当前'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>
4

5 回答 5

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

小提琴

于 2012-05-10T14:12:09.633 回答
1

尝试这个:

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

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

此外,您当前正在使用nextAll,这将返回以下所有a元素,当听起来您只想要第一个 following 时a

于 2012-05-10T14:10:27.903 回答
1
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);
于 2012-05-10T14:10:03.643 回答
0

因为.nextAll()只返回匹配元素的兄弟姐妹

6,7,8,9 不是 5 的兄弟,因为它们属于不同的parent(li)

你需要那些你必须使用 jQuery 遍历 DOM 来获取这些元素的a元素。

于 2012-05-10T14:11:05.500 回答
0

如果你能够知道你在最后(没有结果),那么你应该能够跳到下一个li并抓住所有后续的锚元素。

这就是我的处理方式。我给了第五个锚元素一个 id 来表明它是我的current. 当您的current目标没有.nextAll()子元素(a .size()of 0)时,您可以执行以下操作以查找后续锚元素。

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

颜色变化是为了帮助指示找到了哪些元素。看起来你有很多选择!

更新:如果你只想要第一个,你可以用:first这个更新这样的名称来捕获它。

$("#5").parent().next("li").find("a:first")
于 2012-05-10T14:15:27.907 回答