I've got multiple music players on a page and need to make an index of them to pull the position of the current player from. The issue is that the currentPlayer
is not a child, so using .find
or .filter
and then .index
will always return a value of 0
because nothing else is in the array.
So I need to find .currentPlayer
's index within the player
array.
HTML (very simplified):
<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();
To find the position of an element in an array, you use the indexOf() method. This method returns the index of the first occurrence the element that you want to find, or -1 if the element is not found.
The findIndex() method takes a function as the first parameter. This function is executed on every element of the array and the element for which the function returns “true” is the one that matched the specified condition. Thus the index of this matched element is stored in the index variable.
indexOf() The indexOf() method returns the first index at which a given element can be found in the array, or -1 if it is not present.
The :eq() selector selects an element with a specific index number. The index numbers start at 0, so the first element will have the index number 0 (not 1). This is mostly used together with another selector to select a specifically indexed element in a group (like in the example above).
current.index()
will search its parent for the element. so since current
is an only child, it's zero.
You can pass a selector to .index
; it'll tell jQuery to search inside that for your element.
var player = $('.player'),
current = player.filter('.currentPlayer'),
index = current.index('.player');
Or, you can tell jQuery to search for a specific element inside of an array:
var player = $('.player'),
current = player.filter('.currentPlayer'),
index = player.index(current);
You're probably looking for
$('div.player').index($('.currentPlayer'))
http://jsfiddle.net/hmartiro/3Wzbd/
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With