2012-05-16 13 views
7

<a>の要素を配列のオブジェクトとして($('a')を使用)オブジェクトとして格納し、それぞれの位置を取得しようとすると機能しません。jqueryセレクタの結果を反復処理するには

years = $('a'); 
for(i=0;i< years.length;i++){ 
    if(years[i].position().top > year.position().top){ 

    } 
    else{ 

    } 
} 

コンソールは言う:

Uncaught TypeError: Object file:///Users/.../index.html# has no method 'position'

私はクラス名の代わりに、タグ名によって選択された単一の要素でそれを行うと、すべてが正常に動作します。

私は間違っていますか?

+3

あなたのJavaScriptを推測する必要がありますか?あるいは、あなたが試したことを示すことによって、あなたを助けるために私たちを助けることができますか? –

+5

コードはエラーをスローすることはできません。 – Bergi

答えて

9

ではなく、これを使用します。

$("a").each(function() { 
    var pos = $(this).position(); 
    if (pos.top > year.position().top) { 
    // hurray 
    } 
}); 

をまたyearの値は何ですか?私はこのようなjQueryオブジェクトに名前を付けることを好む:var $year = $("#year");$は、それがjQueryオブジェクトであることを覚えておくのに役立ちます。

+0

あなたのために働いた希望 –

+0

ありがとう、それは:) – Michael

1

あなたは、次の操作を行うことができます

var arr = [], elems = $('a'); 

for(var i = 0; i < elems.length; i++){ 
    arr[i] = elems[i]; 
} 
+0

arrは定義されていません。プロパティを設定することはできません。 – Bergi