最近我在关于的一章中阅读了John Resig
的书Secrets of Javascript Ninja
元素事件,他写道:
由于多种原因,不绑定事件将是有利的 处理程序直接到元素。
所以在他的下一个代码中,他定义了自定义addEvent
detachevent
dispatcher
triggerevent
方法,并将事件处理程序存储到缓存队列中,依此类推。
尽管存在浏览器兼容性问题,是否还有其他原因不将事件处理程序直接绑定到元素?
答案 0 :(得分:2)
使用此模型的一个原因是当您处理动态元素时。
如果要在创建每个元素之后将处理程序附加到元素本身,则需要将处理程序附加到它,但我更喜欢使用事件委托并将处理程序注册到一个始终是元素的元素然后过滤目标元素。
答案 1 :(得分:0)
原因在同一部分的后面部分给出。我只是复制它以供参考:
■已修复Event实例。
■函数上下文设置为目标元素。
■Event实例作为唯一参数传递给处理程序。
■事件处理程序将始终按绑定的顺序执行。
此外,您也可以更清楚地控制删除处理程序。
答案 2 :(得分:0)
如果您保留对每个事件监听器及其信息的引用,那么跟踪您的事件监听器会容易得多。它为您提供了一些额外的控制;现在由你决定何时需要使用它。