var icoarr=new Array("first","pre","next","last");

for(i=0;i<4;i++){
$("#"+icoarr[i]).bind('click',function(){
alert(icoarr[i]);//我想实现,点击,分别弹出first,pre,next,last这里没达到效果,求教
});
}
<a id="first"></a>
<a id="pre"></a>
<a id="next"></a>
<a id="last"></a>

解决方案 »

  1.   

    js里面for语句是没有独立作用域的,所以这儿的i实际是全局的,点击事件发生时i的值已经是4了,所以你还用i的话索引就不对而且已经超出了
    var icoarr=new Array("first","pre","next","last");for(i=0;i<4;i++){
    $("#"+icoarr[i]).index=i;
    $("#"+icoarr[i]).bind('click',function(){
    alert(icoarr[this.index]);//用对象本身的属性来保存其索引就可以了,不过jquery不怎么用,不晓得这个事件函数是不是被$("#"+icoarr[i])对象调用的,如果不是的话this指向就不是$("#"+icoarr[i])了,你可以自己试试,不行的话改一下,反正原理就是这样的
    });
    }
     
      

  2.   

    js里面for语句是没有独立作用域的,所以这儿的i实际是全局的,点击事件发生时i的值已经是4了,所以你还用i的话索引就不对而且已经超出了
    var icoarr=new Array("first","pre","next","last");for(i=0;i<4;i++){
    var obj=document.getElementById(icoarr[i]);
    obj.index=i;
    obj.onclick=function(){
         alert(icoarr[this.index]);
        }
    }
    原生js实现,这个肯定可以