如何制作Div ID数组

时间:2014-04-16 18:11:04

标签: javascript jquery arrays

我正在尝试制作一个包含我的div的所有ID的数组.guycontainer

这是我尝试过的:

    $(".guycontainer").each(function(index){
        arrayOfGuys= [];
        var c=$(this);
        arrayOfGuys.push(c.attr('id'));
        console.log(arrayOfGuys);       
    }); 

但在控制台中,它将每个ID记录为一个单独的数组,而不是所有IDS的一个数组

我做错了什么?

感谢

5 个答案:

答案 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()。