事件委托,Event.target 对比 Event.currentTarget

Event delegation, Event.target vs Event.currentTarget

MDN Event.target reference中有一个关于实现事件委托的例子:

事件委托示例

// 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

问题

<li> 元素的边距如何影响 Event.targetEvent.currentTarget

请记住 event.targetevent.currentTarget 的不同之处,如 MDN Event.currentTarget reference 中所述:

我认为关键在于,如果没有边距,则无法直接单击 ul,因为 li 元素将完全填满其 space。

如果有边距,那么至少可能点击ul,其中event.targetevent.currentTarget 的情况相同。

function hide(e) {
    document.querySelector("pre").textContent += 'e.target = ' + e.target.nodeName + ", e.currentTarget = " + e.currentTarget.nodeName + "\n";
}

document.querySelector("#list").addEventListener('click', hide, false);
ul {
  border: 2px solid orange;
}
li {
  padding: 10px;
  color: blue;
  margin: 30px;
  border: 1px dashed blue;
}
<pre></pre>
<ul id="list">
  <li>click me
  <li>click me
  <li>click me
</ul>