關(guān)于js中事件重復(fù)綁定的問(wèn)題

在寫(xiě)一個(gè)項(xiàng)目,有一個(gè)觸發(fā)編輯按鈕才會(huì)出現(xiàn)編輯板塊,然后編輯板塊中有點(diǎn)擊添加的事件。當(dāng)保存編輯,編輯板塊消失。再次點(diǎn)擊編輯,再點(diǎn)擊添加,會(huì)觸發(fā)多次,生成多個(gè)模塊。

經(jīng)過(guò)多次反復(fù)痛苦的調(diào)試,發(fā)現(xiàn)是在點(diǎn)擊編輯后調(diào)用的函數(shù)中綁定了添加的事件,當(dāng)再次點(diǎn)擊編輯時(shí),會(huì)重復(fù)綁定,所以會(huì)出現(xiàn)觸發(fā)多次的bug。

解決方法就是在綁定之前先解綁。

$('.u-edit-btn-box').off('click','#btnAdd').on('click','#btnAdd',function() {addInput();});

這樣就可以解決了。jquery中還有很多類(lèi)似的處理,比如說(shuō)運(yùn)行一個(gè)動(dòng)畫(huà)前先將之前的動(dòng)畫(huà)stop()掉。


不過(guò)在解綁事件時(shí)最好將具體的元素寫(xiě)入,因?yàn)樵谑录袝r(shí),不寫(xiě)明具體,解綁會(huì)將所有事件解綁

<body>
<button class="btn1">綁定2和3事件</button>
<button class="btn2">2事件</button>
<button class="btn3">3事件</button>
</body>
  <script type="text/javascript" src="js/jquery-3.1.0.min.js"></script>
  <script type="text/javascript">
$('body').on('click','.btn1',function() {
    $('body').off().on('click','.btn2',function() {
        alert(2);
    });
    $('body').off().on('click','.btn3',function() {
        alert(3);
    });
})

</script>

上述例子只會(huì)觸發(fā)alert(3),因?yàn)辄c(diǎn)擊btn1時(shí),解綁了所有在body上的click事件,只會(huì)調(diào)用在最后綁定的alert(3)。
應(yīng)該寫(xiě)成

 $('body').on('click','.btn1',function() {
    $('body').off('click','.btn2').on('click','.btn2',function() {
        alert(2);
    });
    $('body').off('click','.btn3').on('click','.btn3',function() {
        alert(3);
    });
})
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 第1章 鼠標(biāo)事件 1-1 jQuery鼠標(biāo)事件之click與dbclick事件 用交互操作中,最簡(jiǎn)單直接的操作就是...
    mo默22閱讀 1,351評(píng)論 0 6
  • 事件流 IE和Netscape開(kāi)發(fā)團(tuán)隊(duì)提出了完全相反的兩種事件流的概念,事件冒泡流和事件捕獲流。 事件冒泡 事件由...
    exialym閱讀 1,057評(píng)論 0 9
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,323評(píng)論 25 708
  • 認(rèn)識(shí)阿華是在開(kāi)學(xué)軍訓(xùn)期間。那天,我們正在休息,陽(yáng)光正直當(dāng)頭,本來(lái)有點(diǎn)中暑的我看什么都暈暈乎乎的,可是就在模糊狀態(tài)中...
    赤道偏離閱讀 773評(píng)論 16 7
  • 在朋友圈里看到185團(tuán)今年種植了很多的油菜,如今大面積開(kāi)花,黃燦燦一片花海,甚為壯觀,為185團(tuán)獨(dú)特的景區(qū)又添一彩...
    青柳青青閱讀 1,310評(píng)論 13 6

友情鏈接更多精彩內(nèi)容