从数组中获取值并为每个值创建变量

时间:2012-08-16 13:14:22

标签: jquery arrays variables

我有这个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]);
    }

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:3)

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

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

顺便说一句,如果您仍需要所有ID的数组,请使用.map()代替.each()this.id instead of $(this).attr('id')

var elementArray = $(".section > div").map(function ()
{
    return this.id
}).get();