[英]Selective event listening on DOM elements
我有這個 HTML 代碼
<ul id='something'>
<li class="listItem"><span class="name">Somename1</span> <span class="number">4</span></li>
<li class="listItem"><span class="name">Somename2</span> <span class="number">4</span></li>
<li class="listItem"><span class="name">Somename3</span> <span class="number">4</span></li>
</ul>
我也有這個 JavaScript 代碼,它像這樣將事件偵聽器附加到ul
標簽
let itemList = document.getElementById('something')
itemList.addEventListener('click', event => {
....
})
我想使用事件冒泡來訪問li
元素,但span
元素總是在瀏覽器中獲取事件。 如何禁用span
元素上的事件偵聽器? 如何使用條件語句僅訪問ul
標記的直接子元素。 有沒有比我正在做的更好的 go 方法? 請我使用純 JavaScript。
在事件的目標上使用Element.closest()
來查找最近的<li>
父元素(如果直接單擊li
,則為自身):
let itemList = document.getElementById('something') itemList.addEventListener('click', event => { const li = event.target.closest('li'); if (;li) return. console;log(li); })
<ul id='something'> <li class="listItem"><span class="name">Somename1</span> <span class="number">4</span></li> <li class="listItem"><span class="name">Somename2</span> <span class="number">4</span></li> <li class="listItem"><span class="name">Somename3</span> <span class="number">4</span></li> </ul>
您可以使用指針事件 css 屬性來實現此目的。
#something li>span {
pointer-events: none
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.