jQuery从数组中按类获取元素的索引位置

时间:2012-09-13 19:12:54

标签: jquery arrays class filter

我在一个页面上有多个音乐播放器,需要对它们做一个索引以从中拉出当前播放器的位置。问题是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 个答案:

答案 0 :(得分:34)

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

答案 1 :(得分:5)

你可能正在寻找

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

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

答案 2 :(得分:1)

var position = 0;
$('.player').each(function(i){
if ($(this).hasClass('currentPlayer') == true) { position = i; }
});