最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺談jQuery綁定事件會疊加的解決方法和心得總結(jié)

 更新時間:2016年10月26日 09:02:15   投稿:jingxian  
下面小編就為大家?guī)硪黄獪\談jQuery綁定事件會疊加的解決方法和心得總結(jié)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

關(guān)于jQuery的學(xué)習(xí)中我忽略了一個取消綁定事件.unbind()的使用,也不知道綁定事件會累加的情況,結(jié)果因?yàn)檫@個原因,讓我在項(xiàng)目上栽了坑。只能說自己還太年輕,需要學(xué)習(xí)掌握的知識還有很多。

我遇到的問題

我在項(xiàng)目中遇到的狀況,一個評價頁面,簡單的來說就是左右兩個表格,ajax分別動態(tài)加載學(xué)生姓名學(xué)號信息和不同科目對學(xué)生評價內(nèi)容兩部分,兩邊表格我都每行寫了checkbox并對table tbody tr綁定click事件執(zhí)行行選功能,起初我寫的是靜態(tài)頁面html,行選功能完全沒有問題,后來換成jsp頁面,ajax動態(tài)加載數(shù)據(jù)進(jìn)來后,問題就來了,由于ajax異步請求,兩邊表格發(fā)送請求加載數(shù)據(jù)有先后,之前靜態(tài)頁面測試好的行選功能就出了問題,每次刷新頁面,只有后加載的部分才可以行選,之前加載的部分行選失效。自己控制臺打印點(diǎn)擊的狀態(tài)console.log(chkBoxStatus);測試發(fā)現(xiàn)前加載的部分總是打印兩次false true,而后加載的部分只打印一次false或是true。

我之前的行選代碼段:

//行選功能 
  $("table tbody tr").click(function(event) {

  //遍歷tr下的checkbox元素
  var $check = $(this).find("input[type=checkbox]");

  //判斷非點(diǎn)擊checkbox本身
  if($check.length > 0 && event.target != $check[0]) { 
    var chkBoxStatus = $check.is("input:checked");
    console.log(chkBoxStatus);
    $check.prop("checked", !chkBoxStatus); 
  }

  });

起初我認(rèn)為我肯定是jQuery功能代碼不對,于是自己檢查了html里id,class,發(fā)現(xiàn)并沒有出錯,于是我便一直在想為何控制臺會意外打印兩次,后面室友提示我說,試試在執(zhí)行功能之前清除事件綁定,于是我便照做了用jquery 的.unbind("click"),清除所有table上的click事件。結(jié)果!結(jié)果竟然成功了?。?!兩邊的表格數(shù)據(jù)都可以正常進(jìn)行行選功能,雖然是完成了預(yù)期功能,但是我當(dāng)時不知道為什么要這樣去做清除事件。后面我突然想到原來是執(zhí)行了兩次click事件的結(jié)果,每次先加載的數(shù)據(jù),加載完畢后就被綁定click事件一次,后加載的數(shù)據(jù)加載完畢后,之前先加載的數(shù)據(jù)再次被綁定一次click事件,所以也就是為什么先加載的數(shù)據(jù)行選失效,打印兩次false true , 而后加載的數(shù)據(jù)行選正常,打印一次。

下面是修改后的代碼:

//行選功能 
  $("table tbody tr").unbind("click");//清除table的所有click事件  
  $("table tbody tr").click(function(event) {

  //遍歷tr下的checkbox元素
  var $check = $(this).find("input[type=checkbox]");

  //判斷非點(diǎn)擊checkbox本身
  if($check.length > 0 && event.target != $check[0]) { 
    var chkBoxStatus = $check.is("input:checked");
    console.log(chkBoxStatus);
    $check.prop("checked", !chkBoxStatus); 
  }

  });

雖然問題很小,但是也是學(xué)習(xí),總之自己還是需要不斷努力,完善自己。博文只是對自己的總結(jié)

以上就是小編為大家?guī)淼臏\談jQuery綁定事件會疊加的解決方法和心得總結(jié)全部內(nèi)容了,希望大家多多支持腳本之家~

相關(guān)文章

最新評論

中超| 临城县| 金川县| 天柱县| 松阳县| 彰化县| 五华县| 正阳县| 松原市| 双流县| 类乌齐县| 商南县| 武宁县| 社旗县| 营口市| 海宁市| 濮阳市| 广河县| 滨州市| 华池县| 仁化县| 莫力| 洛浦县| 连江县| 东明县| 溧水县| 舒兰市| 浑源县| 涡阳县| 桦川县| 托克托县| 五大连池市| 集安市| 图木舒克市| 太保市| 会泽县| 苍山县| 江门市| 新民市| 通化市| 大方县|