JS動態append之后點擊事件無效


今天做項目用了append向HTML里面添加結構代碼,代碼添加之后,單擊事件就沒反應了。搞得我一臉懵逼,調了代碼很久實在不行,我百度了一下才發現,append添加的節點單擊事件是不會生效的。
原因:
原來append中的節點是在整個文檔加載后才添加的,頁面並不會為未來的元素初始化添加點擊事件,所以使用這種方式動態添加的節點中的點擊事件不會生效。
解決方法:
於是我只好改用事件代理來完成這次我的項目,把這次經歷發在上面存一下檔了,希望下次能記住。
HTML代碼:

<main class="container" style="margin-top: 50px;margin-bottom: 50px">
    <div class="row content" id="content">

    </div>
</main>

append的代碼:我把下面這段代碼,加在content里面

  $('#content').append(`
       <div class="col-md-6">
          <img src="img/cart.png" class="addcart">
       </div>
       <div class="col-md-6">
           <img src="img/buy.png" class="buy">
       </div>
 `);

最終效果:
效果圖
事件代理:
思路:因為最開始他們共同的父級content是在HTML結構中的,所以將兩個單擊事件代理給content,通過單擊獲得的class名來判斷點擊的是哪一個對象,再進行具體操作

$('#content').on('click',function (e) {
  var target=e.target||e.srcElement;//獲取當前點擊的對象
  var cls=target.className;//獲取當前點擊對象的class名
  if(cls==='addcart'){//如果點擊的是加入購物車
      console.log('addcart')
  }else if (cls==='buy') {//如果點擊的是立即購買
      console.log('buy')
  }
});


免責聲明!

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



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