【问题标题】:To know the left position of a array of div in jQuery知道 jQuery 中 div 数组的左侧位置
【发布时间】:2012-01-23 13:28:55
【问题描述】:

我有一个相同类 div 的数组,我想知道每个 div 的左侧位置。所以我使用 each 函数。我找不到确切的。它只显示第一个 div 左边的位置。

我的代码是这样的..

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

selected-item 类是许多 div 的同一类,我想知道每个 div 的位置。

【问题讨论】:

    标签: jquery


    【解决方案1】:

    您还没有完全了解如何使用.each() 函数。在.each() 的回调中,this 指的是当前正在操作的DOM 元素。 (注意这与 jQuery 对象不同)。

    所以把你的代码改成如下:

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

    【讨论】:

      【解决方案2】:

      您在$.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(请忽略对测试的编辑,有人发布了一些猥亵代码)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-12
        • 1970-01-01
        • 1970-01-01
        • 2012-06-23
        • 1970-01-01
        相关资源
        最近更新 更多