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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM