2012-01-23 3 views
1

У меня есть массив одного и того же класса div, и я хочу знать левую позицию каждого из div.so, я использую каждую функцию. я не мог найти точное. он показывает только первую левую позицию div.Знать левую позицию массива div в jQuery

мой код, как это ..

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

класс выбран, пункт тот же класс многих дивы и я хочу знать позицию каждого отд.

ответ

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); 
    }); 

Вы подбирали все .selected-item элементов внутри цикла each, вместо этого вы можете обратиться к одному элементу, который на текущий индекс цикла с this. Также анонимной функцией $.each() передается два аргумента: index текущего элемента в цикле и element, который в этом случае будет элементом DOM в наборе .selected-item элементов.

Вы также можете сделать это с помощью регулярного 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 (пожалуйста, проигнорируйте изменения к тесту, кто-то опубликовал некоторый непристойный код)

Смежные вопросы