现在的位置: 首页 > 综合 > 正文

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

2012年02月06日 ⁄ 综合 ⁄ 共 399字 ⁄ 字号 评论关闭

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

下面是一个负面教材

    <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了 (之前已经循环过了)


抱歉!评论已关闭.