jquery关于遍历数组的一个问题

hjl13960 2013-04-08 02:53:06

$(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,请问我要如何改
...全文
124 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
1234567890l 2013-04-08
  • 打赏
  • 举报
回复
var str ="1,2"; str = str.split(','); for (var i = 1; i <= str.length; i++) { $("#"+i).click(function(){ alert($(this).attr("id"))})
hjl13960 2013-04-08
  • 打赏
  • 举报
回复
引用 3 楼 wuwu8ku 的回复:
原因就是你事件里所用的i是共用同一个i,而遍历完之后i=2,而arr[2] = undefined
不是很理解
wuwu8ku 2013-04-08
  • 打赏
  • 举报
回复
原因就是你事件里所用的i是共用同一个i,而遍历完之后i=2,而arr[2] = undefined
scscms太阳光 2013-04-08
  • 打赏
  • 举报
回复
<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>
bbjbepzz 2013-04-08
  • 打赏
  • 举报
回复

$(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]));
    }
});

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧