第 17 课 17 / 20 | 编码:L17-23
比较与审查

代码对照:差异会带来什么?

列表初始有两个按钮,随后动态插入第三个。两种绑定方式对新增项的处理有何不同?假定按钮文本可能包含 span。

写法 A

for (const button of list.querySelectorAll('button')) {
  button.addEventListener('click', () => select(button));
}

写法 B

list.addEventListener('click', event => {
  const button = event.target.closest('button');
  if (button && list.contains(button)) select(button);
});

提问:指出关键差异,给出适用条件或反例;不要仅以代码长短判断。以上为对照片段,阅读其前提后再分析。

查看参考解析

A 只绑定当时查到的按钮,新增项需补绑定;B 利用冒泡统一处理。委托并非所有事件都适用;若嵌套其他列表,还需限定匹配范围与所属层级。