2012-05-02 14 views
9

jQueryセット内の要素の位置を取得しようとしています。jQuery indexOf関数?

$('ul').find('a').indexOf('.active'); 

をそしてa年代のセットで.activeの場所を取得:Here's what I tried so far.

私はこのような何かをできるようにしたいです。

jQueryのindexOf()のような機能はありますか?

$('ul a.active') 

あなたはしかし、場所を取得することにより、どのような意味ですか:index()方法は、あなたがちょうどselectorにそれを尋ねることによってこれを行うことができます

+0

何が出力になるはずですか? – gdoron

+0

@gdoron出力は2であると予想されます(3番目の 'a'要素です) – tobyodavies

+0

@tobyodavies。 [有益なオーバーロードがあります](http://stackoverflow.com/a/10406578/601179)。 – gdoron

答えて

10

別のjQueryセットのindexメソッドの引数としてjQueryセット($searchFor)を渡すと、つまり($searchIn)ie

$searchIn.index($searchFor) 

それはあなたの例ではセット$searchIn

$searchForのインデックスを返します。

$('ul a').index($('ul a.active')); 

+3

注: '$( 'ul a')'は '$( 'ul')と同じです。find( 'a')' – tobyodavies

+3

...少し速い – Alp

+0

@Alp。 [これはさらに高速です](http://stackoverflow.com/a/10406578/601179)DOMを2回クエリする必要はありません。 – gdoron

-2

動作しませんか?あなたはポジションを意味しますか?またはURL?

clickのいずれかを知りたい場合は、イベント機能内で$(this)を使用します。

を位置を取得するには:ここで.activeクラスで複数がある場合は、クリックした要素の現在位置を返す例です

$('ul a.active').click(function(){ 
    alert($(this).position()); 
}) 

URLの場所を取得するには:

$('ul a.active').click(function(){ 
    alert($(this).attr('href')); 
}) 
+0

位置はインデックスを参照しています.jQueryセットに相対的なURLまたは要素(一般的には)はありません。またOPはfindを使う方法をはっきりと知っているので、 '$( 'ul a.active')'はOPが求めているもののようには何もしません。 – tobyodavies

+0

彼は 'indexOf'を求めている' index'を要求していません。最後に私はこれらをチェックしました。 –

+0

"index"と "indexOf"はどう違うのですか?私は、同じオブジェクト型と言語の間の両方を同じ意味で実装する単一の言語を考えることはできません。 OPは "indexOf"という単語を "index"ではなく、配列や文字列のJSの組み込みメソッドの名前に使用しています。また、彼は "indexOf"を探しているので、URLではなく、位置座標でなくindex_を探しています。これが私の指摘です。 – tobyodavies

0

あなただけindex機能にjQueryオブジェクトを与える必要があります。

var elements = $('ul a'); 
var index = elements.index(elements.filter('.active')); // 2 

alert(index); 

Live DEMO


ボックスのうち、そのような機能はありませんが、このように簡単に行うことができます。

var index = -1; 
$('ul a').each(function(i){ 
    if ($(this).hasClass('active')){ 
     index = i; 
     return false; 
    } 
}); 

alert(index); 

Live DEMO

0

あなたのロジックが健全です、間違った要素をつかんでいるだけです:http://jsfiddle.net/xz9dW/19/

var index = $('ul a.active').closest('li').index(); 

aリンクには兄弟がないのでindex()という値はありません。 li

+0

私はセットの 'a'のインデックスを取得することができるようにしたい – qwertymk