操縱陣列I具有低於循環:的jQuery
var myArray = [];
$(this).children('a').each(function() {
myArray.push($(this).attr('href'));
});
其中觸發3次。當我查看該數組時,我發現只有一個(最後添加的)項。爲什麼?
操縱陣列I具有低於循環:的jQuery
var myArray = [];
$(this).children('a').each(function() {
myArray.push($(this).attr('href'));
});
其中觸發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
});
});
它是在jquery函數之外聲明的,所以我不認爲這是問題所在。 +它確實有一個值... – gdoron 2012-01-16 18:35:15
@gdoron我沒有看到所有的代碼。 OP很可能使用'.click()。click()。click()'= 3觸發器調用函數。但是,如果'var myArray = [];'在click事件處理程序中,則該數組只能在本地可用。 – 2012-01-16 18:37:32
我建議使用循環,因爲它們快得多。
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);
什麼是這裏面的代碼?如果你在另一個函數或循環中,你每次都重置myArray。 – MetalFrog 2012-01-16 18:31:32
這是整個代碼? – Tyler 2012-01-16 18:33:29