JQuery получить индекс позиции элемента по классу из массива

У меня есть несколько музыкальных проигрывателей на странице, и мне нужно составить их индекс, чтобы вывести позицию текущего проигрывателя. Проблема в том, что currentPlayer это не ребенок, поэтому с помощью .find или же .filter а потом .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();

3 ответа

Решение

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

Вы, вероятно, ищете

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

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

var position = 0;
$('.player').each(function(i){
if ($(this).hasClass('currentPlayer') == true) { position = i; }
});
Другие вопросы по тегам