$(function () {
 
    var str = "1,2";
    var arr = str.split(',');
    for (var i = 0; i < arr.length; i++) {
        $("#a"+arr[i]).bind("click", function () {
            alert(arr[i]);
        });
    }
})
首先,我页面有两个链接,他们的ID分别是1,2
我的做法很简单,单击ID为1的链接,则弹出1;单击id为2则显示2;
但目前我的写法却显示出undefined,请问我要如何改jquerjQuery遍历函数JavaScript

解决方案 »

  1.   


    $(function () {  
        var str = "1,2";
        var arr = str.split(',');
        for (var i = 0; i < arr.length; i++) {
            $("#a"+arr[i]).bind("click", (function(_i){
             return function () {
                 alert(_i);
             }
            })(arr[i]));
        }
    });
      

  2.   

    <button id="a1">a1</button>
    <button id="a2">a2</button>
    <script type="text/javascript">
        //这个需要用到闭包
        var str = "1,2";
        var arr = str.split(',');
        for (var i = 0; i < arr.length; i++) {
            document.getElementById("a"+arr[i]).onclick=(function(n){
                return function(){
                    alert(n);
                }
            })(arr[i]);
        }
    </script>
      

  3.   

    原因就是你事件里所用的i是共用同一个i,而遍历完之后i=2,而arr[2] = undefined
      

  4.   

     var str ="1,2";
               str = str.split(',');
               for (var i = 1; i <= str.length; i++) {
                    $("#"+i).click(function(){ alert($(this).attr("id"))})