我是一个刚学jquery的新手。今天遇到了一个很棘手的问题,已经卡在这半天了,望各位高手指点一下,万分感谢。大体情况是这样的,我新建了一个数组 p_array,准备将它其中每一个元素设置属性并分别绑定click事件,然后将它们再依次添加到我的content div中来。可是代码好像并没有依照我的想法执行。添加进来后才发现,每一个元素都被绑定了同样的事件。问题代码如下:
<body>
<script type="text/javascript" src="js/jquery-1.4.2.min.js"></script>
<script type="text/javascript">
function click_me(n){
alert(n);
}
function click_method(){
var div_content= $("#content");//content div
var p_array= new Array(10);
div_content.empty();
for(var i=0;i<p_array.length;i++){
p_array[i]= $('<span>aa</span>');
p_array[i].bind("click", function(){click_me(i);});
p_array[i].appendTo(div_content);
}
}
$(document).ready(function(){
  $("#command").bind("click", click_method);
}); 
</script><div id="command">
<p>click</p>
</div>
<div id="content">
</div>
</body>
PS:
我的设想是要实现与以下同等功能的代码
<div id="content">
<span onclick="function(){click_me(0);}"></span>
<span onclick="function(){click_me(1);}"></span>
<span onclick="function(){click_me(2);}"></span>
<span onclick="function(){click_me(3);}"></span>
……
</div>可是执行后却发现,功能代码是
<div id="content">
<span onclick="function(){click_me(n);}"></span>
<span onclick="function(){click_me(n);}"></span>
<span onclick="function(){click_me(n);}"></span>
<span onclick="function(){click_me(n);}"></span>
</div>

解决方案 »

  1.   

    <body>
    <script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.4.2.min.js"></script>
    <script type="text/javascript">
    function click_me(n){
    alert(n);
    }
    function click_method(){
    var div_content= $("#content");//content div
    var p_array= new Array(10);
    div_content.empty();
    for(var i=0;i<p_array.length;i++){
    p_array[i]= $('<span>aa</span><br/>');
    p_array[i].bind("click", new Function("click_me(" + i + ")"));
    p_array[i].appendTo(div_content);
    }
    }$(document).ready(function(){
    $("#command").bind("click", click_method);
    });  
    </script><div id="command">
    <p>click</p>
    </div>
    <div id="content">
    </div>
    </body
      

  2.   

    p_array[i].bind("click", {'value':i},function(v){click_me(v.data["value"]);});