-1

説明:次のようなコードがあります。私はそれらに正しいインデックスでラベルを付けました。最初のulタグがインデックス0であり、2番目がインデックス1であることを理解しています。各ulのliがインデックス0〜5であることを理解しています。私はこれらをボタンとして設定しているので、それらをクリックすると、CSSクラスが削除され、次に別のCSSクラスが追加されます。ただし、スコープにより、2番目のUL(または以下にラベル付けされているインデックス1 UL)の最初の子をクリックすると、next()またはprev()を使用して最初のUL(インデックス0 UL)の最後の子のクラスを変更できません。 )。

質問:インデックス0 LI(インデックス1 UL内)をクリックした場合、インデックス0ULのインデックス5LIおよび/またはインデックス4LIのクラスを変更するにはどうすればよいですか?

<ul> (Index 0 UL>)
<li><li> (Index 0 LI>)
<li><li> (Index 1 LI>)
<li><li> (Index 2 LI>)
<li><li> (Index 3 LI>)
<li><li> (Index 4 LI>)
<li><li> (Index 5 LI>)
</ul>
<ul> (Index 1 UL>)
<li><li> (Index 0 LI>)
<li><li> (Index 1 LI>)
<li><li> (Index 2 LI>)
<li><li> (Index 3 LI>)
<li><li> (Index 4 LI>)
<li><li> (Index 5 LI>)
</ul>
<ul> (Index 2 UL>)
<li><li> (Index 0 LI>)
<li><li> (Index 1 LI>)
<li><li> (Index 2 LI>)
<li><li> (Index 3 LI>)
<li><li> (Index 4 LI>)
<li><li> (Index 5 LI>)
</ul>

助けてくれてありがとう。

ウェイン

4

2 に答える 2

0

次のプラグインメソッドを使用できます。

jQuery.extend(jQuery.fn, {
    nextSiblingOrCousin: function() {
        var $next = this.next();
        if ($next.length == 0) {
            $next = this.parent().next().children(':first');
        }
        return $next;
    },

    prevSiblingOrCousin: function() {
        var $prev = this.prev();
        if ($prev.length == 0) {
            $prev = this.parent().prev().children(':last');
        }
        return $prev;
    }
});

これらを使用すると、.prev()および.next()へのすべての呼び出しを変更できます。.prevSiblingOrCousin().nextSiblingOrCousin()

jsfiddleのデモ

<div>注:以前は、それぞれの周りにあると思っていましたが、<ul>そうではないようです。

于 2013-03-03T05:09:54.893 に答える
0

私はこれを理解しました。parent()。prev()を使用すると、前の親と会話できるようになります。

parent()。prev()。find('li:last-child')を使用すると、最後の子と話すことができます。また、ウィキで読んだnth-last-child-type(または同様のもの)と呼ばれるものがあり、最後の親から始めてカウントダウンする前の親内の任意の数の要素と話すことができます。

ウェイン

       if($(this).index()<2) { // Only do this if the button clicked on is indexed at 0 or 1
          if($(this).parent().index()!=0) { // Ensure we are not at the first parent index
            if(!$(this).parent().prev().find('li:last-child').hasClass('whatever')) { // Look for the correct class 
              alert("Current Index: "+$(this).parent().index());
              alert("Previous Parent Index: "+$(this).parent().prev().index());
              alert("Previous Index Last Child: "+$(this).parent().prev().find('li:last-child').index());
            }
          }
       }
于 2013-03-03T17:27:09.473 に答える