1

ドキュメント内のすべてにインデックスを付けてから、インデックスで呼び出したいと思います。HTML:

<ul>
  <li id="foo">foo</li>
  <li id="bar">bar</li>
</ul>

インデックスを取得するためのアラート:

alert('Index: ' + $('#foo').index());

問題は、と0の両方の番号を警告することです。私はこれの論理を理解していますが、順番にそれらが必要なので、は を数え、 はである必要があります。ul#fooul0#foo1

このタイプのインデックスを取得するにはどうすればよいですか? 試してみprevAll()ましたが、同じ結果になります。

PSこれは単なる例ではありません。実際には、コードは大きなドキュメントで機能するはずです。

サンプルコード

4

2 に答える 2

1

index()引数なしは、その親内の要素のインデックスを探します。しかし、それを超える引数で呼び出すことができます。

あなたの例に取り組んでいるとしましょう

<ul>
  <li id="foo">foo</li>
  <li id="bar">bar</li>
</ul>

解決策は次のようになります。

$('ul, li').index($('ul'))   // => 0
$('ul, li').index($('#foo')) // => 1
$('ul, li').index($('#bar')) // => 2

これをプログラムで行うこともできます。

$('ul, li').each(function(i) {
  console.log(this.tagName + (!!this.id ? " #" + this.id : "") + " = " + i)
})

// UL     => 0
// LI#foo => 1
// LI#bar => 2

に一致するノード内の$(selector).index(element)のインデックスを返すことに注意してください。elementselector

それが役立つことを願っています。

于 2013-04-22T07:48:53.957 に答える
1

次のようなことができます。

$.fn.tree_index = function() {
    var index = -1;

    $(this).parents().each(function() {
        index += $(this).index() + 1;
    });

    return index;
}

alert('Index: ' + $('#foo').tree_index());
于 2013-04-22T07:38:28.903 に答える