2012-01-23 3 views
1

私は同じクラスdivの配列を持っています。div.soのそれぞれの左の位置を知りたいのですが、私はそれぞれの関数を使います。私は正確を見つけることができません。最初のdivの左の位置のみを表示します。jQueryでdivの配列の左の位置を知るには

私のコードはそのような..です

 jQuery.each(jQuery('.selected-item'), function(index, selectpos) { 
     selectpos = jQuery('.selected-item').position(); 
     console.log(index + ':' + selectpos.left); 
     }); 

選択項目のクラスは、多くのdivの同じクラスであり、私は、各divの位置を知りたいです。

答えて

0

.each()機能を使用する方法がまだわかりません。 .each()のコールバック内で、thisは、操作中の現在のDOM要素を参照します。 (これはjQueryオブジェクトとは異なります)。

だから、次のようにコードを変更:

jQuery.each(jQuery('.selected-item'), function(index, selectpos) { 
    selectpos = jQuery(this).position(); 
    console.log(index + ':' + selectpos.left); 
    }); 
0

あなたは$.each()の匿名関数のパラメータの使用しているは少し奇妙に思えます。このことができます参照してください:

jQuery.each(jQuery('.selected-item'), function(index, element) { 
     var selectpos = jQuery(this).position(); 
     console.log(index + ':' + selectpos.left); 
    }); 

あなたはeachループ内.selected-itemのすべての要素を選択して、代わりにあなたがthisとループの現在のインデックスである、単一の要素を参照することができます。 $.each()の無名関数には、ループ内の現在の項目のindexelementという2つの引数が渡されます。この場合、.selected-item要素のDOM要素になります。あなたはまた、定期的にforループでこれを行うことができます

:これを行うに

var $selectedItems = $('.selected-item'); 
    for (var i = 0, len = $selectedItems.length; i < len; i++) { 
     var selectpos = $selectedItems[i].position(); 
     console.log(index + ':' + selectpos.left); 
    } 

利点は、このforループがより速く実行するということです。パフォーマンスの違いを示すjsperfは次のとおりです。http://jsperf.com/jquery-each-vs-for-loops/2(テストの編集を無視してください、誰かが偽のコードを投稿しました)

関連する問題