gpt4 book ai didi

javascript - 事件委托(delegate),Event.target 与 Event.currentTarget

转载 作者:数据小太阳 更新时间:2023-10-29 06:11:04 27 4
gpt4 key购买 nike

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

事件委托(delegate)示例

// 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>怎么 margin ?元素使Event.target之间有所不同和 Event.currentTarget

最佳答案

请记住是什么让 event.target 不同于 event.currentTarget,如 MDN Event.currentTarget reference 中所述:

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

如果边距,那么至少可能点击ul,在这种情况下事件.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>

关于javascript - 事件委托(delegate),Event.target 与 Event.currentTarget,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31088296/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com