<script src="js/jquery-1.4.3.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function(){
   for(var i=0;i<10;i++)
{
 var div=$("<div style='width:100px; heigh:100px; background:scroll 1px #0C9; margin:10px;'>  aa  </div>");
$("#ab").append(div);
$(div).click(function(){
 alert(i);
});
}})
</script>
</head><body id="ab"></body>
每次都是弹出10 是不是要 闭包。 
我要每次弹出当前i 1,2,3.....

解决方案 »

  1.   

    $(document).ready(function(){
                               for(var i=0;i<10;i++)
                            {
                                 var div=$("<div style='width:100px; heigh:100px; background:scroll 1px #0C9; margin:10px;' >  aa  </div>");
    div.data("val",i+1);
                                $("#ab").append(div);
                                $(div).click(function(){
                                                     alert($(this).data("val"));
                                });
                            }})
    我喜欢这样.
      

  2.   


     var div=$("<div style='width:100px; heigh:100px; background:scroll 1px #0C9; margin:10px;' num="+i+">  aa  </div>");
                                $("#ab").append(div);
                                $(div).click(function(){
                                                     alert($(this).attr("num"));
                                });这样加个自定义属性行么 ?
      

  3.   

                                $(div).click(function(i){
                                         return function(){
                                                     alert(i);
                                         }
                                }(i));
      

  4.   

    可以这样
    $(document).ready(function(){
                               for(var i=0;i<10;i++)
                            {
                                 var div=$("<div style='width:100px; heigh:100px; background:scroll 1px #0C9; margin:10px;' >  aa  </div>");
     
                                $("#ab").append(div);
                               (function(i){
                                $(div).click(function(){
                                         alert(i);           
                                });
                            
                               })(i+1);
                            }
    })
      

  5.   


    <script type="text/javascript">
    $(document).ready(function(){
      for(var i=0;i<10;i++){
        var div=$("<div style='width:100px; heigh:100px; background:scroll 1px #0C9; margin:10px;'>  aa  </div>");
        $("#ab").append(div);
        $(div).click(function(i){
          return function(){alert(i);}
        }(i));
      }
    });
    </script>
      

  6.   

    这是闭包引起,可以这样解决
    $(document).ready(function(){
                               for(var i=0;i<10;i++)
                            {
                                 var div=$("<div style='width:100px; heigh:100px; background:scroll 1px #0C9; margin:10px;'>  aa  </div>");
                                $("#ab").append(div);
                                $(div).bind("click",{'$i':i},function(event){
                                                     alert(event.data['$i']);
                                });
                            }})