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