0

最近我读了John Resig他的书Secrets of Javascript Ninja,在关于元素事件的章节中,他写道:

出于多种原因,最好不要将事件处理程序直接绑定到元素。

所以在他的下一个代码中,他定义了自定义addEvent detachevent dispatcher triggerevent方法,并将事件处理程序存储到缓存队列中等等。

尽管存在浏览器兼容性问题,还有其他原因不将事件处理程序直接绑定到元素吗?

4

3 回答 3

2

使用此模型的一个原因是在处理动态元素时。

如果您想在创建每个元素后将处理程序附加到元素本身,则需要将处理程序附加到它,但我更喜欢使用事件委托并将处理程序注册到将始终存在的元素然后过滤目标元素。

于 2013-08-07T03:13:49.717 回答
0

原因在同一节的后面部分中给出。我只是复制它以供参考:

■ 事件实例已修复。

■ 函数上下文设置为目标元素。

■ 事件实例作为其唯一参数传递给处理程序。

■ 事件处理程序将始终按照它们绑定的顺序执行。

此外,您还可以更清晰地控制处理程序的删除。

于 2013-08-07T03:33:18.010 回答
0

如果您保留对每个事件侦听器及其信息的引用,则跟踪事件侦听器会容易得多。它为您提供了一些额外的控制;现在由您决定何时需要使用它。

于 2013-08-07T04:02:06.697 回答