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();
Ответы
Ответ 1
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);
Ответ 2
Возможно, вы ищете
$('div.player').index($('.currentPlayer'))
http://jsfiddle.net/hmartiro/3Wzbd/
Ответ 3
var position = 0;
$('.player').each(function(i){
if ($(this).hasClass('currentPlayer') == true) { position = i; }
});