我正在尝试制作一个包含我的div的所有ID的数组.guycontainer
这是我尝试过的:
$(".guycontainer").each(function(index){
arrayOfGuys= [];
var c=$(this);
arrayOfGuys.push(c.attr('id'));
console.log(arrayOfGuys);
});
但在控制台中,它将每个ID记录为一个单独的数组,而不是所有IDS的一个数组
我做错了什么?
感谢
答案 0 :(得分:3)
在每次迭代时都会被覆盖,将数组变量移到.each()之外,执行:
var arrayOfGuys= [];
$(".guycontainer").each(function(index){
var c=$(this);
arrayOfGuys.push(c.attr('id'));
console.log(arrayOfGuys);
});
答案 1 :(得分:1)
如果将数组的创建移到循环外部,则不会为每次迭代重新创建数组:
arrayOfGuys = [];
$(".guycontainer").each(function(){
arrayOfGuys.push($(this).attr('id'));
});
您还可以使用map
方法:
arrayOfGuys = $(".guycontainer").map(function(){
return $(this).attr('id');
}).get();
答案 2 :(得分:0)
您每次循环时都会重新初始化数组。你需要在循环之外做到这一点:
var arrayOfGuys= [];
$(".guycontainer").each(function(index){
var c=$(this);
arrayOfGuys.push(c.attr('id'));
});
console.log(arrayOfGuys);
答案 3 :(得分:0)
var arrayOfGuys= [];
$(".guycontainer").each(function(index){
var c=$(this);
arrayOfGuys.push(c.attr('id'));
console.log(arrayOfGuys);
});
“each”中的“function”是一个新的函数调用...这意味着当你说“arrayOfGuys = []”时,你实际上是在该函数调用中创建一个新数组。
答案 4 :(得分:0)
你可以使用jquery map方法迭代元素数组并返回它们的id:
var arrayOFGuys = $.map($(".guycontainer"), function(el){return $(el).attr("id")});
demo http://jsfiddle.net/arcm111/q4MVd/
编辑:
根据jquery
如果你想处理一个jQuery对象 - 例如,$('div')。map(callback); - 改为使用.map()。