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