通过jQuery操作数组

时间:2012-01-16 18:29:22

标签: jquery

我有以下循环:

        var myArray = [];
        $(this).children('a').each(function () {
            myArray.push($(this).attr('href'));
        });
发射3次。当我查看该数组时,我发现只有一个(最后添加的)项目。为什么?

2 个答案:

答案 0 :(得分:3)

因为您使用声明myArray作为局部变量。如果您希望数组的值保持不变,请将var myArray = [];移到公共函数之外。

var myArray = []; // This variable is shared by all instances of somefunction
$('#example').click(function() {
    $(this).children('a').each(function () {
        myArray.push($(this).attr('href'));  //myArray in the parent scope
    });
});

答案 1 :(得分:1)

我建议使用for循环,因为它们要快得多。

http://jsperf.com/jquery-each-vs-for-loop/44

试试这个:

var myArray = [],
    links = $("a.link");
for (var i = 0, l = links .length; i < l; i++) {
    myArray.push($(links[i]).attr("href"));
}
console.log(myArray);