zoukankan      html  css  js  c++  java
  • JQuery在循环中绑定事件的问题详解

    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之后,控制页面不跳转
                    }
                });

  • 相关阅读:
    QT5控件-QDateTimeEdit和类QDateTime
    QT5-控件-QTimeEdit和QTime
    QT5-控件-QDateEdit 和 日期类QDate
    QT5-控件-QComboBox
    错误记录 "MongoClient opened before fork. Create MongoClient "
    GitHub 常用命令
    Linux学习记录-----《快乐的Linux命令行》.
    最全的HTTP1.1状态码
    恢复旋转排序数组
    C语言I博客作业09
  • 原文地址:https://www.cnblogs.com/limeiky/p/6094340.html
Copyright © 2011-2022 走看看