2012-01-23 50 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,在這種情況下,它將是.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(請忽略編輯的測試,有人發佈了一些lewd代碼)

相關問題