17

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

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

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();
4

3 に答える 3

35

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);
于 2012-09-13T19:16:44.220 に答える
6

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

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

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

于 2012-09-13T19:19:01.477 に答える
1
var position = 0;
$('.player').each(function(i){
if ($(this).hasClass('currentPlayer') == true) { position = i; }
});
于 2012-09-13T19:32:01.067 に答える