一次执行两次事件问题
解决:在 (e) => {}
事件执行回调中 添加 e.stopPropagation();
阻止事件冒泡
原因:
在事件流中,事件捕获只会发生在子元素身上,而之后会上升到父元素,父元素若不限制同样会执行上升接收到的事件。
this.ul.addEventListener('click', (e)=> {
e.stopPropagation();
if (e.target.nodeName == 'LI') {
for (let li of this.lis) {
if (li.nodeName == 'LI') {
li.classList.remove('active');
}
}
e.target.classList.add('active');
}
}, false);
直接上图理解: