在“myFunction”中,我有一个each()
迭代器,它可以找到某些元素的高度。如何将每个高度值分配给增量生成的变量名称,可在每个循环外部访问?
function myFunction(){
$('#div1, #div2 ... #divN').each(function(index){
/* Increment variable name here */ = $(this).outerHeight();
});
// Also use those variables here
};
感谢。
答案 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中的定位方式。
如果你希望高度以某种方式与可以识别元素的东西相关联,你可以使用一个对象,其中键是元素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 ......