(面向c#開發(fā)人員) 編寫javascript的好習(xí)慣七 閉包1
閉包是一個(gè)很強(qiáng)大的功能,但是也很不容易用好
下面是一個(gè)負(fù)面教材
<ul id="ul1">
</ul>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>
<script>
for (var i = 0; i < 10; i++) {
$("<li />", {
id: i,
text: "link " + i,
click: function () {
alert("you have clicked " + i);
}
}).appendTo("#ul1");
}
</script>
最終效果如下所示
所有的文本都是正確的,但是點(diǎn)擊任何一個(gè)文本 彈出的都是 you have clicked 10

這是因?yàn)樵邳c(diǎn)擊button的時(shí)候才調(diào)用click事件
而這個(gè)時(shí)候才調(diào)用 alert("you have clicked " + i);
這時(shí)候的i已經(jīng)是10了 (之前已經(jīng)循環(huán)過了)
posted on 2011-07-23 21:33 聽說讀寫 閱讀(269) 評(píng)論(0) 收藏 舉報(bào)
浙公網(wǎng)安備 33010602011771號(hào)