Skip to content

事件传播、默认行为与委托:练习答案 ​

捕获、目标与冒泡顺序 ​

对 outer → inner 注册 capture 与 bubble 监听,点击 inner 时日志顺序应为 outer:capture → inner:capture → inner:bubble → outer:bubble。event.target 始终是实际点击节点,event.currentTarget 随当前监听器变化;答案需分别打印二者,不能只写“事件冒泡了”。

preventDefault 与 stopPropagation ​

preventDefault() 只取消浏览器默认行为,例如链接导航;stopPropagation() 只阻止继续传播,目标节点自己的其他监听器仍可能执行。表单校验失败时取消 submit 并聚焦错误字段,校验成功时不要无条件阻止默认提交。

事件委托与动态节点 ​

js
list.addEventListener('click', (event) => {
  const button = event.target.closest('button[data-id]')
  if (!button || !list.contains(button)) return
  removeItem(button.dataset.id)
})

动态插入的按钮无需单独绑定;点击列表空白处不会触发 action。答案应验证删除一个条目后新增条目仍可用,并在卸载列表时移除委托监听器。

章节入口核对 ​

以下入口对应本章概览或综合练习,答案核对沿用本章各知识点的实现与日志。

用心记录每一步成长