0

現在の「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>
4

5 に答える 5

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 に答える
1

これを試して:

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

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

また、現在使用しているのは、最初の次の要素だけが必要なように聞こえる場合にnextAll、次のすべての要素を返すことです。aa

于 2012-05-10T14:10:27.903 に答える
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 に答える
0

.nextAll()一致した要素の兄弟のみを返すため

6,7,8,9は、異なる下にあるため、5の兄弟ではありませんparent(li)

aこれらの要素をフェッチするためにjQueryを使用してDOMをトラバースする必要があるものが必要です。

于 2012-05-10T14:11:05.500 に答える
0

li自分が最後にいることを知ることができる場合(結果がない場合)、次の要素にジャンプして、後続のすべてのアンカー要素を取得できるはずです。

これが私がそれにアプローチした方法です。5番目のアンカー要素にIDを付けて、それが自分のものであることを示しましたcurrentcurrentターゲットに子がない場合.nextAll()(a.size()が0)、次を実行して後続のアンカー要素を見つけることができます。

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

色の変更は、見つかった要素を示すのに役立ちます。選択肢がたくさんあるようです。

更新:最初のものだけが必要な場合は、この更新:firstのような指定でキャプチャできます。

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