想象一下这个简单的html代码:
<section onclick="dosomething(event)">
<div slot="header" class="collapse-header">
<div class="collapse-image"></div>
<div class="collapse-text-price-container">
<div class="collapse-text">სასაჩუქრე ბარათი 200 ლარი – ტანსაცმლის მაღაზია ZURA & SHARK</div>
<div minprice="1200"></div>
</div>
<div class="center-item-container">
<div class="status success-status">წაღებული</div>
</div>
<div class="center-item-container">
<div class="date-text">10 იან, 2018</div>
</div>
<div class="center-item-container">
<iron-icon class="icon" icon="bog:chevron-down"></iron-icon>
</div>
</div>
<div slot="body" class="collapse-body">
<div>Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old.</div>
</div>
</section>
请注意代码的这一部分:
onclick="dosomething(event)"
。正如您所看到的,我在外部<section>
标记内拥有许多其他元素。我还有许多类似的部分,并且在单击时,我想获取单击的确切节元素。我该怎么办?event.srcElement
有时会返回此部分内的元素,而不是部分本身。那么解决方案是什么?我的当前解决方案(我不喜欢)是从
event
中获取属性path
或composedPath
,它是元素数组,并且我迭代它,直到我找到具有section
标签名称的元素。
.srcElement
是由Microsoft在其全局event
对象中引入的专有属性。"标准化"的方法是使用.addEventListener()
,它将一个Event
对象作为第一个参数传递给注册的事件处理程序。然后使用标准化的target
属性。Element.closest()
。