Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/474.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 单击JS删除事件侦听器_Javascript_Addeventlistener_Dom Events - Fatal编程技术网

Javascript 单击JS删除事件侦听器

Javascript 单击JS删除事件侦听器,javascript,addeventlistener,dom-events,Javascript,Addeventlistener,Dom Events,场景: 我将此代码用于页面,并在单击事件时应用它,现在我很难将其从页面中删除(同样,单击时) 我该怎么做 document.addEventListener('touchmove',函数(e){ e、 预防默认值(); }, { 被动:错误 });将事件侦听器绑定/解除绑定到addEventListener和removeEventListener方法时,使用命名回调函数touchMove 要删除的事件侦听器使用以下组合进行标识: 事件类型、事件侦听器函数本身以及各种 可能影响匹配过程的可选

场景:

  • 我将此代码用于页面,并在单击事件时应用它,
    现在我很难将其从页面中删除(同样,单击时)
  • 我该怎么做
document.addEventListener('touchmove',函数(e){
e、 预防默认值();
}, {
被动:错误

});
将事件侦听器绑定/解除绑定到
addEventListener
removeEventListener
方法时,使用命名回调函数
touchMove

要删除的事件侦听器使用以下组合进行标识: 事件类型、事件侦听器函数本身以及各种 可能影响匹配过程的可选选项


因此,初始化您的按钮,将单击时的事件侦听器添加到touchmove区域,然后从按钮中删除单击功能,并对其进行设置,以便下一个cick添加删除事件侦听器以删除单击和触摸事件。基本上在按钮和div上切换事件侦听器

//Touchmove action
function preDef(e) {
  e.preventDefault();
}

//Add the touchmove action and toggle the button to remove the action
function addE(e) {
  e.target.removeEventListener('click', addE, {passive: false});
  e.target.addEventListener('click', removeE, {passive: false});
  document.addEventListener('touchmove', preDef, {passive: false});
}

//Remove the touchmove action and toggle the button to add the action
function removeE(e) {
  e.target.removeEventListener('click', removeE, {passive: false});
  e.target.addEventListener('click', addE, {passive: false});
  document.removeEventListener('touchmove', preDef, {passive: false});
}

//Initialize the add action
document.getElementById('somebutton').addEventListener('click', addE, {passive: false});

您需要创建一个函数,然后可以为这两个函数设置相同的回调函数。那么它应该会起作用。document.removeEventListener(“touchmove”,您的函数);如果添加var,是否会在页面加载时成为自执行文件?它是否影响
被动:false
,或者在本例中我应该把它放在哪里@dysfuncit只是一个函数表达式,不会在页面加载时执行。它将绑定到事件,但在通过事件调用之前不会执行。如果要调用
e.preventDefault()
,实际上不需要传入侦听器选项。设置
passive:true
将忽略
e.preventDefault()
调用。我需要这个
passive:false
代码,所以我应该把它放在哪里?用它的其余部分尝试了这个(添加和删除添加到点击事件中的行),但这对我不起作用,这是我尝试的代码:
var touchMove=function(e){e.preventDefault();},{被动:false};
@dysfunc
//Touchmove action
function preDef(e) {
  e.preventDefault();
}

//Add the touchmove action and toggle the button to remove the action
function addE(e) {
  e.target.removeEventListener('click', addE, {passive: false});
  e.target.addEventListener('click', removeE, {passive: false});
  document.addEventListener('touchmove', preDef, {passive: false});
}

//Remove the touchmove action and toggle the button to add the action
function removeE(e) {
  e.target.removeEventListener('click', removeE, {passive: false});
  e.target.addEventListener('click', addE, {passive: false});
  document.removeEventListener('touchmove', preDef, {passive: false});
}

//Initialize the add action
document.getElementById('somebutton').addEventListener('click', addE, {passive: false});