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);
2012-09-13 19:19
var position = 0;
$('.player').each(function(i){
if ($(this).hasClass('currentPlayer') == true) { position = i; }
});