web-dev-qa-db-ja.com

jQueryは、配列からクラスごとに要素のインデックス位置を取得します

1ページに複数の音楽プレーヤーがあり、現在のプレーヤーの位置を取得するためにそれらのインデックスを作成する必要があります。問題は、currentPlayerが子ではないため、.findまたは.filterを使用してから.indexを使用すると、他に何もないため、常に0の値が返されることです。配列内にあります。

したがって、player配列内で.currentPlayerのインデックスを見つける必要があります。

HTML(非常に単純化):

<ul>
    <li>
        <article>
             <div class="player"></div>
        </article>
    </li>
    <li>
        <article>
             <div class="player currentPlayer"></div>
        </article>
    </li>
    <li>
        <article>
             <div class="player"></div>
        </article>
    </li>
</ul>

JavaScript:

var player  = $('.player'),
    current = player.filter('.currentPlayer'),
    index = current.index();
16
technopeasant

current.index()は、その親で要素を検索します。 currentは一人っ子なので、ゼロです。

セレクターを.indexに渡すことができます。 jQueryにその中を検索して要素を探すように指示します。

var player  = $('.player'),
    current = player.filter('.currentPlayer'),
    index = current.index('.player');

または、配列内の特定の要素を検索するようにjQueryに指示することもできます。

var player  = $('.player'),
    current = player.filter('.currentPlayer'),
    index = player.index(current);
34
Rocket Hazmat

あなたはおそらく探しています

$('div.player').index($('.currentPlayer'))

http://jsfiddle.net/hmartiro/3Wzbd/

5
hayk.mart
var position = 0;
$('.player').each(function(i){
if ($(this).hasClass('currentPlayer') == true) { position = i; }
});
1
Silviu Burcea