亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > JavaScript > 正文

淺談JS閉包中的循環綁定處理程序

2024-05-06 16:10:31
字體:
來源:轉載
供稿:網友
初學者經常碰到的,即獲取HTML元素集合,循環給元素添加事件。在事件響應函數中(event handler)獲取對應的索引。但每次獲取的都是最后一次循環的索引。原因是初學者并未理解JavaScript的閉包特性。
 
 

前幾天工作中寫前端js代碼時,遇到了遍歷元素給它添加單擊事件。就是這個問題讓我整整調了一個下午。最后還是下班回家,上網查資料才知道怎么解決的。 (PS:之前也在《jQuery基礎教程》第四版中看過講循環綁定處理程序的內容,當時估計也沒怎么用心看,所以沒記起來。)
  大神要是知道這類情況,可以關掉窗口,寫這些主要是給像我一樣的小白看的。謝謝!

  先貼上錯誤的例子讓大家看看。(例子里面用到jQuery,請導入jQuery庫)

 

復制代碼代碼如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
  <title>循環綁定處理程序</title> 
  <script src="js/jquery-2.1.1.min.js"></script> 
  <script type="text/javascript"> 
    $(function(){ 
      for(var i=1;i<=4;i++){ 
        $("#btn"+i).get(0).onclick=function(){ 
          alert(i); 
        } 
      } 
    }); 
  </script> 
</head> 
<body> 
  <button id="btn1">按鈕1</button> 
  <button id="btn2">按鈕2</button> 
  <button id="btn3">按鈕3</button> 
  <button id="btn4">按鈕4</button> 
</body> 
</html> 

 
  這段代碼運行之后,點擊按鈕,彈出的alert中顯示數據幾呢,我之前一直認為按鈕1到按鈕4,對應的alert中的數字也是1到4。要是你也這樣想,那就錯了。 
  點擊每個按鈕,alert中都是顯示數字4,沒想到吧! 
  現在寫幾種解決方案,共大家參考 !
  第一種、編寫一個function,在這個function中返回一個函數

 

 

復制代碼代碼如下:

<script type="text/javascript"> 
  $(function(){ 
    for(var i=1;i<=4;i++){ 
      $("#btn"+i).get(0).onclick=btnClick(i);

 

    } 
  }); 
  var btnClick=function(value){ 
    return function(){ 
      alert(value); 
    } 
  } 
</script> 

 

  第二種、使用立即調用函數表達式 
  (function(value){ 
    //代碼塊 
  })(i)//這就是立即調用函數表達式

 

復制代碼代碼如下:

<script type="text/javascript"> 
  $(function(){ 
    for(var i=1;i<=4;i++){ 
      $("#btn"+i).get(0).onclick=(function(value){ 
        return function(){ 
        alert(value); 
      } })(i);

 

    } 
  }); 
</script> 

 

   第三種、使用jQuery的each函數

 

復制代碼代碼如下:

<script type="text/javascript"> 
  $(function(){ 
    $.each([1,2,3,4],function(index,value){ 
        $("#btn"+value).get(0).onclick=function(){ 
        alert(value); 
      } 
    }); 
  }); 
</script> 

 

  使用上面三種情況,就可以避免一開始那個情況了。 
  其中get(0)指的是將jQuery對象轉為DOM對象。

以上就是個人對JS閉包中的循環綁定處理程序的理解,分享給大家,希望能對小伙伴們有所幫助


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品欧美风情| 视频在线一区二区| 伦伦影院午夜日韩欧美限制| 日韩禁在线播放| 国产精品一区二区久久久| 奇米一区二区三区四区久久| 国产美女直播视频一区| 激情懂色av一区av二区av| 日韩女优在线播放| 国产成人综合久久| 上原亚衣av一区二区三区| 亚洲精品久久久久久久久久久| 4438全国成人免费| 国产中文字幕91| 欧美成人一区二区三区电影| 亚洲精品按摩视频| 最新亚洲国产精品| 国产一区二区三区毛片| 亚洲影院在线看| 国产综合香蕉五月婷在线| 国产成人精品免费视频| 88xx成人精品| 色婷婷av一区二区三区久久| 国外成人在线视频| 性欧美xxxx交| 欧美理论电影在线观看| 亚洲高清久久网| 成人观看高清在线观看免费| 亚洲性猛交xxxxwww| 色婷婷亚洲mv天堂mv在影片| 亚洲乱码一区av黑人高潮| 欧美日韩电影在线观看| 欧美洲成人男女午夜视频| 亚洲国产一区二区三区在线观看| 欧美激情视频一区二区三区不卡| 91精品久久久久久久久久入口| 人妖精品videosex性欧美| 狠狠干狠狠久久| 日韩av电影在线播放| 国产成人福利夜色影视| 亚洲欧美另类中文字幕| 96sao精品视频在线观看| 日本精品va在线观看| 欧美专区在线观看| 日韩精品高清在线| 色婷婷**av毛片一区| 国产成人精品在线观看| 欧美一级大片在线观看| 亚洲成人激情视频| 亚洲欧美在线一区二区| 在线电影欧美日韩一区二区私密| 国产一区二区在线免费视频| 欧美电影在线观看网站| 欧美综合激情网| 日韩美女在线观看| 热久久美女精品天天吊色| 97国产一区二区精品久久呦| 久久久久久亚洲精品中文字幕| 亚洲国产一区二区三区在线观看| 日韩中文字幕精品视频| 久久成年人免费电影| 欧美在线激情网| 亚洲色图13p| 亚洲黄色www网站| 国产福利精品在线| 国产精品久久国产精品99gif| 日韩在线视频免费观看| 亚洲区bt下载| 色妞欧美日韩在线| 欧美成年人视频网站| 久久久国产精品一区| 国产成人精品电影久久久| 黄色精品在线看| 成人网址在线观看| 国产精品自拍视频| 麻豆一区二区在线观看| 亚洲一区美女视频在线观看免费| 最近2019中文字幕第三页视频| 久久国产天堂福利天堂| www亚洲欧美| 91精品国产乱码久久久久久蜜臀| 欧美一区二区大胆人体摄影专业网站| 日韩亚洲国产中文字幕| 国产精品99导航| 97欧美精品一区二区三区| 精品久久久久久中文字幕一区奶水| 国产精品人成电影在线观看| 日韩毛片在线看| 欧美亚洲伦理www| 成人h视频在线观看播放| 国产精品视频精品| 欧美日韩亚洲视频一区| 欧美午夜精品久久久久久久| 国产小视频国产精品| 成人黄色短视频在线观看| 国产精品福利网| 亚洲精品小视频| 成年无码av片在线| 国产日韩欧美电影在线观看| 国产欧美日韩免费看aⅴ视频| 欧美激情视频一区| 国产精品99导航| 欧美激情久久久久| 国产专区欧美专区| 欧美一级在线播放| 亚洲精品av在线| 亚洲va欧美va在线观看| 日韩电视剧在线观看免费网站| 91精品久久久久久久| 亚洲美女视频网| 97在线精品国自产拍中文| 亚洲春色另类小说| 尤物精品国产第一福利三区| 国产精品自拍偷拍视频| 国内揄拍国内精品| 久久久久久久久91| 欧美激情精品久久久久久黑人| 亚洲精品videossex少妇| 日本精品一区二区三区在线| 秋霞午夜一区二区| 91免费国产网站| 国内精品视频久久| 国产精品美女网站| 亚洲香蕉伊综合在人在线视看| 国产噜噜噜噜久久久久久久久| 欧美插天视频在线播放| 久久福利视频导航| 欧洲精品在线视频| 国产精品99久久99久久久二8| 国产日本欧美一区二区三区| 亚州国产精品久久久| 亚洲乱码国产乱码精品精天堂| 久久久精品国产一区二区| 日韩成人在线免费观看| 欧美午夜宅男影院在线观看| 国产亚洲a∨片在线观看| 亚洲天堂av女优| 中文字幕欧美精品在线| 九色91av视频| 亚洲一区www| 黄网动漫久久久| 亚洲韩国欧洲国产日产av| 成人有码在线播放| 国产精品∨欧美精品v日韩精品| 91精品久久久久久久久中文字幕| 欧美成人精品影院| 97超级碰在线看视频免费在线看| 久久成人精品一区二区三区| 亚洲另类欧美自拍| 欧美xxxx18性欧美| 日韩精品免费视频| 亚洲国产精品人人爽夜夜爽| 欧美大片欧美激情性色a∨久久| 欧美肥老妇视频| 亚洲第一页中文字幕| 久久久久久国产精品| 欧美中文在线观看| 久久精品国产久精国产思思| 亚洲成人黄色网| 亚洲精品一区在线观看香蕉| 国产精品7m视频| 国产精品va在线| 成人黄色av免费在线观看| 庆余年2免费日韩剧观看大牛|