我有以下循环:
var myArray = [];
$(this).children('a').each(function () {
myArray.push($(this).attr('href'));
});
发射3次。当我查看该数组时,我发现只有一个(最后添加的)项目。为什么?
答案 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);