Javascript 事件委派,Event.target与Event.currentTarget
中有一个关于实现事件委派的示例: 事件委派示例 问题:Javascript 事件委派,Event.target与Event.currentTarget,javascript,dom-events,Javascript,Dom Events,中有一个关于实现事件委派的示例: 事件委派示例 问题: 元素上的边距如何区分事件.目标和事件.当前目标?记住是什么使得事件.目标不同于事件.当前目标,如下所述: 我认为关键是如果没有边距,那么就不可能直接点击ul,因为li元素将完全填满它的空间 如果有余量,则至少可以单击ul,在这种情况下event.target和event.currentTarget将是相同的 函数隐藏(e){ document.querySelector(“pre”).textContent+='e.target='+e.
元素上的边距如何区分事件.目标
和事件.当前目标
?记住是什么使得事件.目标
不同于事件.当前目标
,如下所述:
我认为关键是如果没有边距,那么就不可能直接点击ul
,因为li
元素将完全填满它的空间
如果有余量,则至少可以单击ul
,在这种情况下event.target
和event.currentTarget
将是相同的
函数隐藏(e){
document.querySelector(“pre”).textContent+='e.target='+e.target.nodeName+”,e.currentTarget=“+e.currentTarget.nodeName+”\n;
}
document.querySelector(“#list”).addEventListener('click',hide,false)代码>
ul{
边框:2倍纯色橙色;
}
李{
填充:10px;
颜色:蓝色;
利润率:30像素;
边框:1px蓝色虚线;
}
- 点击我
- 点击我
- 点击我
我错误理解的很大一部分是我没有读到这篇文章:“事件。currentTarget
总是指事件处理程序附加到的元素,而不是事件。target
标识事件发生的元素。”-也许您可以将此报价添加到您的答案中,以便将来搜索此主题。谢谢@l0lander:这是一个社区维基,所以可以根据需要自由编辑。
// Assuming there is a 'list' variable containing an instance of an
// HTML ul element.
function hide(e) {
// Unless list items are separated by a margin, e.target should be
// different than e.currentTarget
e.target.style.visibility = 'hidden';
}
list.addEventListener('click', hide, false);
// If some element (<li> element or a link within an <li> element for
// instance) is clicked, it will disappear.
// It only requires a single listener to do that
// Unless list items are separated by a margin, e.target should be
// different than e.currentTarget