日期:2014-05-16  浏览次数:20326 次

JQuery变量作用范围求解啊
JScript code

    $("#camps").empty();
    for ( var i = 0; i < 5; i++) {
        var camp = $("<button class='camp camp-text'>" + i + "</button>")
        .button().click(function() {
            alert(i);
        });
        $("#camps").append(camp);
    }



通过上面代码生成5个按钮, 但是不论我点那个按钮都会弹出5~ 相当于i始终就等于最后一次的结果,求各位大哥帮忙解答下, 这是怎么回事啊 , 如果才能使其弹出相应的值呢 ,

------解决方案--------------------
for ( var i = 0; i<5; i++) {
var camp = $("<button class='camp camp-text' id="+i+">" + i + "</button>")
.button().click(function() {
alert(id);
});
------解决方案--------------------
i只有一个值,你的程序运行完了,i的值就固定了,你应该把i值绑定到按钮的属性上
------解决方案--------------------
“弹出相应的值”的方法
HTML code
<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.4.4.min.js"></script>
<div id="camps"></div>
<script language="javascript" type="text/javascript">  
    $("#camps").empty();
    for ( var i = 0; i < 5; i++) {
        var camp = $("<button class='camp camp-text'>" + i + "</button>").click(function() {
            alert(this.innerHTML);
        });
        $("#camps").append(camp);
    }
</script>

------解决方案--------------------
探讨

这个闭包是什么意思啊 ?