$("#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始终就等于最后一次的结果,求各位大哥帮忙解答下, 这是怎么回事啊 , 如果才能使其弹出相应的值呢 , 

解决方案 »

  1.   

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

  2.   

    i只有一个值,你的程序运行完了,i的值就固定了,你应该把i值绑定到按钮的属性上
      

  3.   

    “弹出相应的值”的方法
    <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>  
    闭包的方法:
    <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++) {
            (function(key){var camp = $("<button class='camp camp-text'>" + key + "</button>").click(function() {
                alert(key);
            });
            $("#camps").append(camp)})(i);
        }
    </script>  
      

  4.   

    http://so.csdn.net/search?t=all&q=%E9%97%AD%E5%8C%85&sort=