如果单击子节点,则不会激发JavaScript单击事件
我正在处理一个无法使用jQuery的项目,我对单击事件有一个问题 我有一个带有图标和一些文本的链接,我想创建一个事件,当我单击该链接时,它会添加一个“选定”类。 问题是,当我单击一个子节点时,类被添加到其中,而不是链接 下面是一个例子:如果单击子节点,则不会激发JavaScript单击事件,javascript,dom-events,Javascript,Dom Events,我正在处理一个无法使用jQuery的项目,我对单击事件有一个问题 我有一个带有图标和一些文本的链接,我想创建一个事件,当我单击该链接时,它会添加一个“选定”类。 问题是,当我单击一个子节点时,类被添加到其中,而不是链接 下面是一个例子: window.onload=function(){ var actions=document.queryselectoral(“.action”); actionClickHandler=函数(e){ e、 target.classList.add(“选定”)
window.onload=function(){
var actions=document.queryselectoral(“.action”);
actionClickHandler=函数(e){
e、 target.classList.add(“选定”);
};
actions.forEach(函数(操作){
action.addEventListener(“单击”,actionClickHandler);
});
}
.action{
显示:内联块;
填充:10px 15px;
背景色:#eee;
边框:1px实心#ddd;
边界半径:8;
颜色:#666;
文字装饰:无;
}
.行动:悬停{
盒影:0px2p5pxRGBA(0,0,0,0.3);
边框颜色:#ccc;
}
.选定{
背景色:#fff;
}
使用
event.currentTarget
而不是event.target
返回事件linstener附加到的DOM元素,而不是返回最内部的元素,即捕获事件的元素
window.onload=function(){
var actions=document.queryselectoral(“.action”);
actionClickHandler=函数(e){
e、 currentTarget.classList.add(“选定”);
};
actions.forEach(函数(操作){
action.addEventListener(“单击”,actionClickHandler);
});
}
.action{
显示:内联块;
填充:10px 15px;
背景色:#eee;
边框:1px实心#ddd;
边界半径:8;
颜色:#666;
文字装饰:无;
}
.行动:悬停{
盒影:0px2p5pxRGBA(0,0,0,0.3);
边框颜色:#ccc;
}
.选定{
背景色:#fff;
}