Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/76.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 为什么可以';t删除同级'上的事件侦听器;s_Javascript_Html_Event Listener - Fatal编程技术网

Javascript 为什么可以';t删除同级'上的事件侦听器;s

Javascript 为什么可以';t删除同级'上的事件侦听器;s,javascript,html,event-listener,Javascript,Html,Event Listener,函数show1(){ 控制台日志(“ok1”); document.getElementById(“a2”)。removeEventListener(“单击”,委派); } 函数show2(){ 控制台日志(“ok2”); } 函数show3(){ 控制台日志(“ok3”); } 函数委托(事件){ var flag=event.target; 开关(flag.id){ 案例“a1”: show1(); 打破 案例“a2”: show2(); 打破 案例“a3”: show3(); 打破 } }

函数show1(){
控制台日志(“ok1”);
document.getElementById(“a2”)。removeEventListener(“单击”,委派);
}
函数show2(){
控制台日志(“ok2”);
}
函数show3(){
控制台日志(“ok3”);
}
函数委托(事件){
var flag=event.target;
开关(flag.id){
案例“a1”:
show1();
打破
案例“a2”:
show2();
打破
案例“a3”:
show3();
打破
}
}
ob=document.getElementById(“tl”);
ob.addEventListener(“点击”,代表)
  • a1
  • a2
  • a3

如果侦听器已附加到某个元素,则删除该侦听器的唯一方法是从同一元素中删除同一个侦听器-无法从子元素中删除该侦听器,因为它未附加到子元素

对于要查找的功能,可以将要“删除”单击功能的节点添加到
集合
,并在父节点的处理程序中,检查
事件.target
标志
变量)是否不包括在该
集合中:

const elementsToIgnore=new Set();
函数show1(){
控制台日志(“ok1”);
elementsToIgnore.add(document.getElementById(“a2”);
}
函数show2(){
控制台日志(“ok2”);
}
函数show3(){
控制台日志(“ok3”);
}
函数委托(事件){
var flag=event.target;
if(elementsToIgnore.has(flag))返回;
开关(flag.id){
案例“a1”:
show1();
打破
案例“a2”:
show2();
打破
案例“a3”:
show3();
打破
}
}
ob=document.getElementById(“tl”);
ob.addEventListener(“点击”,代表)
  • a1
  • a2
  • a3

如果侦听器已附加到某个元素,则删除该侦听器的唯一方法是从同一元素中删除同一个侦听器-无法从子元素中删除该侦听器,因为它未附加到子元素

对于要查找的功能,可以将要“删除”单击功能的节点添加到
集合
,并在父节点的处理程序中,检查
事件.target
标志
变量)是否不包括在该
集合中:

const elementsToIgnore=new Set();
函数show1(){
控制台日志(“ok1”);
elementsToIgnore.add(document.getElementById(“a2”);
}
函数show2(){
控制台日志(“ok2”);
}
函数show3(){
控制台日志(“ok3”);
}
函数委托(事件){
var flag=event.target;
if(elementsToIgnore.has(flag))返回;
开关(flag.id){
案例“a1”:
show1();
打破
案例“a2”:
show2();
打破
案例“a3”:
show3();
打破
}
}
ob=document.getElementById(“tl”);
ob.addEventListener(“点击”,代表)
  • a1
  • a2
  • a3

这是因为您要将事件侦听器添加到
ul
而不是
li
。将
事件
处理程序添加到
li
中,如下所示

函数show1(){
控制台日志(“ok1”);
document.getElementById(“a2”)。removeEventListener(“单击”,委派);
}
函数show2(){
控制台日志(“ok2”);
}
函数show3(){
控制台日志(“ok3”);
}
函数委托(事件)
{
var flag=event.target;
开关(flag.id){
案例“a1”:
show1();
打破
案例“a2”:
show2();
打破
案例“a3”:
show3();
打破
}
}
ob=document.getElementsByTagName(“li”);

对于(设i=0;i这是因为您要将事件侦听器添加到
ul
而不是
li
。将
事件处理程序添加到
li
,如下所示

函数show1(){
控制台日志(“ok1”);
document.getElementById(“a2”)。removeEventListener(“单击”,委派);
}
函数show2(){
控制台日志(“ok2”);
}
函数show3(){
控制台日志(“ok3”);
}
函数委托(事件)
{
var flag=event.target;
开关(flag.id){
案例“a1”:
show1();
打破
案例“a2”:
show2();
打破
案例“a3”:
show3();
打破
}
}
ob=document.getElementsByTagName(“li”);
for(设i=0;i