JQuery在循环中绑定事件的问题详解

有个页面上需要N个DOM,每个DOM里面的元素ID都要以数字结尾,比如说

1
2
3
<input type="text" name="username" id="username_1" value="" />
<input type="text" name="username" id="username_2" value="" />
<input type="text" name="username" id="username_3" value="" />

现在有个循环,在页面载入的时候需要给这每个元素增加一个onclick事件,很容易想到的写法就是

1
2
3
4
5
6
7
$(function(){
 for(var i=1; i<=3; i++){
  $('#username_'+i).onclick(function(){
   alert(i);
  });
 }
});

这么写是错误的。。。

错误的原因以及类似的错误分析详见这篇文章《深入理解JQuery循环绑定事件》

然后改成下面的就对了

1
2
3
4
5
6
7
8
9
10
$(function(){
 for (var i=1; i<=3; i++){
  $("#username_"+i).bind("click", {index: i}, clickHandler);
 }
 
 function clickHandler(event) {
  var i= event.data.index;
  alert(i);
 }
});

举例:

    $(function(){
                for(var n=1;n<menulist.length;n++){
                    $(".rm-container #level"+menulist[n].id+" a").bind("click", {index: menulist[n].name}, clickHandler);
                }
                function clickHandler(event) {
                    var i= event.data.index;
                    alert(i);//输出a标签的名字
                    return false;//点击a之后,控制页面不跳转
                }
            });

最新文章

  1. Cell右滑 多个编辑选项栏
  2. zTree和SweetAlert插件初探
  3. PKU 1007
  4. C# 获取文件路径
  5. ie,火狐,谷歌 select清除默认样式 设置新的样式
  6. MVC 基架不支持 Entity Framework 6 或更高版本
  7. shell脚本 空格
  8. OA系统如何使用考勤机数据
  9. Thinkphp整合最新Ueditor编辑器
  10. mvc和三层架构到底有什么区别
  11. Context Switch and System Call
  12. github import repository创建github仓库
  13. python3基础视频教程
  14. pyspider解析
  15. JAVA验证身份证格式及合法性
  16. canvas-star0.html
  17. php 获取顶级域名
  18. php 安装过程 第二次探索
  19. JAVA设计模式详解(五)----------适配器模式
  20. n阶方阵A可逆充分必要条件

热门文章

  1. CocoaPod遇到更新不了的原因
  2. 响应式布局2--MATE
  3. PHP Apache服务配置
  4. 白话LINQ系列2---以代码演进方式学习LINQ必备条件
  5. ELK修炼之道
  6. Retrieve失败解决办法一例
  7. ASP.NET 管道事件与HttpModule, HttpHandler简单理解
  8. WPF:设置弹出子菜单的是否可用状态及效果
  9. hdu 5780 gcd
  10. 关于ifram之间的相互调用