0

我有这个html:

<div id="h101" data-stellar-ratio="6"><img src="images/h1_01.png" width="600"></div>
<div id="cloud01" data-stellar-ratio="0.5"><img src="images/cloud_01-s.png"></div>
<div id="cloud02" data-stellar-ratio="0.4"><img src="images/cloud_01-s.png"></div>
<div id="island01" data-stellar-ratio="2"><img src="images/island_01.png" width="620"></div>

我从所有 id 创建一个数组

$(".section > div").each(function() {
ellementArray.push($(this).attr("id"));});

现在我的 ellementArray 中有所有值。我想要做的是创建这个:

var h101Left = $("#h101").position().left;
var cloud01Left = $("#cloud01").position().left;
var island02Left = $("#island02").position().left;
var island03Left = $("#island03").position().left;

我在想这样的事情......

for (var i = 0; i < ellementArray.length; i++){
        jQuery.globalEval("var ellementArray[i] = ellementArray[i];")
        console.log(ellementArray[i]);
    }

有人可以帮忙吗?

4

1 回答 1

3

你把事情复杂化了。只需创建一个从字符串(元素 ID)到数字(位置左值)的映射:

var leftPositions = {};
$(".section > div").each(function ()
{
    leftPositions[this.id] = $(this).position().left;
});

顺便说一句,如果您仍然需要一个包含所有 ID 的数组,请使用.map()而不是.each(),而this.id不是$(this).attr('id')

var elementArray = $(".section > div").map(function ()
{
    return this.id
}).get();
于 2012-08-16T13:18:17.363 回答