在jQuery中增加变量名称

时间:2013-01-31 12:11:37

标签: jquery each

在“myFunction”中,我有一个each()迭代器,它可以找到某些元素的高度。如何将每个高度值分配给增量生成的变量名称,可在每个循环外部访问?

function myFunction(){

    $('#div1, #div2 ... #divN').each(function(index){
        /* Increment variable name here */ = $(this).outerHeight();
    });

    // Also use those variables here

};

感谢。

3 个答案:

答案 0 :(得分:6)

使用array可以更好地解决此任务,并且由于jQuery的内置方法,您可以轻松地将一组元素中的某些值提取到数组中:

var heights = $('#div1, #div2 ... #divN').map(function(){
    return $(this).outerHeight();
}).get();
// `heights` is an array and
// heights[0] = height of first element in the tree
// heights[1] = height of second element in the tree
// ...

我必须强调heights数组的顺序不是你将元素放在选择器中的顺序! jQuery将始终将元素重新排序为它们在DOM中的定位方式。

参考.map.get


如果你希望高度以某种方式与可以识别元素的东西相关联,你可以使用一个对象,其中键是元素ID,值是高度:

var heights = {};
$('#div1, #div2 ... #divN').each(function(){
    heights[this.id] = $(this).outerHeight();
});
// `heights` is an object and
// heights['div1'] = height of element with ID div1
// heights['div2'] = height of element with ID div2
// ...

答案 1 :(得分:1)

您可以使用数组/对象:

function myFunction(){

    var heights = [];

    $('#div1, #div2 ... #divN').each(function(index, value){
        heights[index] = $(this).outerHeight();
    });

    console.log(heights); // etc... etc...

};

您将能够像以下一样访问它们:

heights[1]heights[2] ...等

答案 2 :(得分:1)

如果你真的想要动态创建命名变量(而不是像评论中所建议的那样使用数组),你可以做类似的事情

$('#div1, #div2 ... #divN').each(function(index){
    window['myVar' + index] = $(this).outerHeight();
}

将创建名为myVar0,myVar1 ...

的全局变量

如果你不想像这样污染全局命名空间,你可以去:

var myVars = {};
$('#div1, #div2 ... #divN').each(function(index){
    myVars['var' + index] = $(this).outerHeight();
}

并访问您的变量,例如myVars.var0,myVars.var1 ......