要知道jQuery中div数组的左侧位置

时间:2012-01-23 05:16:39

标签: jquery

我有一个相同类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的位置。

2 个答案:

答案 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()的匿名函数传递两个参数,即循环中当前项的indexelement,在这种情况下,.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(请忽略对测试的编辑,有人发布了一些猥亵代码)