我有一個從數組綁定函數到某些元素的問題,但是當我點擊類「class」的任何元素後,出現此錯誤。如何控制變量提升?
Uncaught TypeError: Property '4' of object function(){alert(1)},function(){alert(2)},function(){alert(3)},function(){alert(4)} is not a function
var c = [
function(){alert(1)},
function(){alert(2)},
function(){alert(3)},
function(){alert(4)}
];
function test(b){
for(var i = 0; i < b.length; i++){
$('.class').eq(i).bind('click', function(){
b[i]();
});
}
}
test(c);
我認爲變量i保持其最後的值。
任何解決方案或解釋將非常感激。 在此先感謝。
這不是吊裝。這就是範圍。 – Bergi 2013-02-26 20:10:07
試試這個:'$('。class')。eq(i).bind('click',b [i]);' – 2013-02-26 20:11:18
你的數組只有4個索引(0,1,2,3)是第五個索引是未定義的,這意味着你的循環必須走得太遠,儘管我不立即明白爲什麼。儘管如此,你的索引有一個範圍問題。您的單擊事件b [i]()將始終調用數組中的最後一個函數。 – 2013-02-26 20:12:14