我有一大堆類似的列表項,我想附加mousedown()
函數。所以,我希望做的是替換此:使用循環設置mousedown函數
$('#controls li[id=d1]').mousedown(function(){
console.log('d1');
});
$('#controls li[id=d2]').mousedown(function(){
console.log('d2');
});
與此:
var loopvar;
for (loopvar = 1; loopvar <= 2; loopvar++) {
$('#controls li[id=d' + loopvar + ']').mousedown(function(){
console.log('d' + loopvar);
});
}
(這是一個簡單的例子 - 我其實有很多li
的處理) 但是當我點擊一個li
,我總是在控制檯上得到d3
。循環結束時,loopvar
的值爲3,所以看起來就是這樣。那麼如何使用循環附加函數呢?
你剛剛遇見一個叫做閉包的東西。 JavaScript中最強大但最危險的一個(如果你不知道如何使用它)。 –
歡迎來到JavaScript閉包http://stackoverflow.com/questions/111102/how-do-javascript-closures-work – fujy
在這種情況下,您可以使用console.log(this.id) – bfavaretto