我有一个相同类div的数组,我想知道每个div的左侧位置。所以我使用每个函数。我找不到确切的。它只显示第一个div左侧位置。
我的代码就是那样..
jQuery.each(jQuery('.selected-item'), function(index, selectpos) {
selectpos = jQuery('.selected-item').position();
console.log(index + ':' + selectpos.left);
});
selected-item类是许多div的同一类,我想知道每个div的位置。
答案 0 :(得分:0)
您还没有完全了解如何使用.each()
功能。在.each()
的回调中,this
指的是当前正在操作的DOM元素。 (注意,这与jQuery对象不同)。
所以将代码更改为:
jQuery.each(jQuery('.selected-item'), function(index, selectpos) {
selectpos = jQuery(this).position();
console.log(index + ':' + selectpos.left);
});
答案 1 :(得分: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
,在这种情况下,.selected-item
将是for
中的DOM元素。 1}}元素。
您也可以使用常规 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
这样做的好处是这个{{1}}循环执行得更快。这是一个用于演示性能差异的jsperf:http://jsperf.com/jquery-each-vs-for-loops/2(请忽略对测试的编辑,有人发布了一些猥亵代码)