addEventListener注意问题

  1. document.addEventListener('touchmove', function(e) { e.preventDefault(); }, false);  


但是有另外一个需求是需要将以上的'touchmove'恢复为默认的。开始我直接使用removeEventListener,但是不起作用。后来发现如果要让removeEventListener成功的话需要把里面function单独封装成一个方法。 


  1. function preventDefault(e) { e.preventDefault(); };  
  2.   
  3. document.addEventListener('touchmove', preventDefault, false);  
  4. document.removeEventListener('touchmove', preventDefault, false);  

把操作封装成一个单独的方法,调用时引用同一个方法,listener才能准确找到。如果直接写在参数里,会认为是两个function(e)是不同的操作,所以不能remove成功。

注:JS每次使用addEventListener后,该事件函数为全局监听,每次不使用时必须removeEventListener掉,不然容易出错,例如每次进入该界面时都会注册一个相同

的事件

你可能感兴趣的:(addEventListener注意问题)