17

我在一个页面上有多个音乐播放器,需要对它们进行索引以从中提取当前播放器的位置。问题是 thecurrentPlayer不是孩子,所以使用.findor.filter和 then.index将始终返回一个值 of0因为数组中没有其他内容。

所以我需要在数组中找到.currentPlayer's 的索引。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 回答