如何在javascript中使用事件委托?

时间:2017-05-16 14:25:45

标签: javascript javascript-events

elem.addEventListener('click',function(e){
    if(e.target && e.target.matches("span#save-icon")){
      var HEX = e.target.parentNode.innerHTML.split('span')[2].split('>')[2].split('<')[0];
      save_to_my_space(HEX);
      console.log(HEX);
    }
  });

这里 elem 是一个父div,有8个孩子,我在 elem 的所有子元素上使用委托事件。每当我通过单击 elem 的子项之一触发事件时,事件会被触发多次,等于chidlren elem 的数量。如何解决这个问题?

1 个答案:

答案 0 :(得分:4)

使用event.stopPropagation()将解决问题

如@George所述,请查看文档here.

elem.addEventListener('click',function(e){
    if(e.target && e.target.matches("span#save-icon")){
      e.stopPropagation()
      var HEX = e.target.parentNode.innerHTML.split('span')[2].split('>')[2].split('<')[0];
      save_to_my_space(HEX);
      console.log(HEX);
    }
  });