(面向c#开发人员) 编写javascript的好习惯七 闭包1

闭包是一个很强大的功能,但是也很不容易用好

下面是一个负面教材

    <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>

 最终效果如下所示

所有的文本都是正确的,但是点击任何一个文本 弹出的都是 you have clicked 10

这是因为在点击button的时候才调用click事件

而这个时候才调用 alert("you have clicked " + i);

这时候的i已经是10了 (之前已经循环过了)


posted on 2011-07-23 21:33  听说读写  阅读(260)  评论(0编辑  收藏  举报

导航