事件是网页交互的基石:点击、输入、滚动、提交、键盘……浏览器把交互封装成事件对象,通过 addEventListener 注册的监听器响应。现代事件模型分捕获、目标、冒泡三个阶段,绝大多数业务代码工作在冒泡阶段。
事件委托是必须掌握的技巧:不在每个子元素上绑监听,而是绑在共同父容器上,利用 event.target 判断来源——动态新增的子元素自动生效,监听器数量从 N 个降到 1 个。
// 事件委托:整个列表一个监听器 list.addEventListener('click', e => { const btn = e.target.closest('.del'); if (!btn) return; btn.closest('li').remove(); }); form.addEventListener('submit', e => { e.preventDefault(); // 阻止表单跳转 console.log(new FormData(e.target)); });