mal*_*kan 5 javascript dom-events
在MDN Event.target参考中,有一个关于实现事件委派的示例:
// 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
Run Code Online (Sandbox Code Playgroud)
我在示例中不理解的是这条评论:
// Unless list items are separated by a margin, e.target should be
// different than e.currentTarget
Run Code Online (Sandbox Code Playgroud)
<li>元素上的保证金如何区分Event.target和Event.currentTarget?
小智 6
请记住与MDN Event.currentTarget参考中所述的event.target不同之处: event.currentTarget
我认为重点是,如果没有边距,那么直接点击它就不可能,ul因为li元素将完全填满它的空间.
如果是保证金,那么它至少会是可能的点击ul,在这种情况下,event.target和event.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);Run Code Online (Sandbox Code Playgroud)
ul {
border: 2px solid orange;
}
li {
padding: 10px;
color: blue;
margin: 30px;
border: 1px dashed blue;
}Run Code Online (Sandbox Code Playgroud)
<pre></pre>
<ul id="list">
<li>click me
<li>click me
<li>click me
</ul>Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1322 次 |
| 最近记录: |