这个问题非常基础,我相信它一定是类似其他问题的重复提问,但是我仍然想要得到回答。
我的问题是: 最佳的地方去注册HTML元素的事件处理程序在哪里?
最简单的方法是直接在内联元素中注册事件处理程序:
<div id = "mybutton" onclick = "doSomething()">Click me</div>
但这与现代Web开发中逻辑和内容分离的压倒性趋势相矛盾。因此,在2012年,所有逻辑/行为都应该在纯Javascript代码中完成。这很好,并且会导致更易维护的代码。但是你仍然需要一些初始的钩子来将HTML元素与Javascript代码连接起来。
通常,我只需要做类似以下的事情:
<body onload = "registerAllEventHandlers()">
但是...这仍然是“作弊”,因为我们仍在使用内联JavaScript。但是我们还有哪些选项呢?我们不能在部分的
window.onload
事件不等同于使用jQuery的ready
事件:window.onload
会在页面加载完成后触发,包括所有外部资源(图像、CSS等),而jQuery的ready
事件将在HTML加载完成后但在外部资源之前触发。使用window.onload
是一个坏主意,因为在许多情况下(许多图像、慢连接等),JavaScript事件需要很长时间才能被注册。 - georgebrock