我正在重写几年前创建的网站的代码,我想知道处理元素上的点击事件的最有效方法是什么?
我有一个带有编辑链接的项目列表,它们都是用onclick="..."
HTML 属性编写的。那样更好还是我应该使用$.bind()
或addEventListener
处理它?最佳做法是什么?
我正在重写几年前创建的网站的代码,我想知道处理元素上的点击事件的最有效方法是什么?
我有一个带有编辑链接的项目列表,它们都是用onclick="..."
HTML 属性编写的。那样更好还是我应该使用$.bind()
或addEventListener
处理它?最佳做法是什么?
使用所谓的unobtrusive javascript被认为是最佳实践。这意味着您将 HTML 的布局与元素的行为分开。因此,不是使用混合元素结构和行为的 onclick 属性,而是在标记中布局 DOM 结构,然后通过 javascript 附加事件处理程序。
这意味着使用 javascript 附加事件处理程序被认为是最佳实践,如下所示:
<html>
<script>
... bind event handlers to your DOM and set behaviours here
</script>
<body>
.... layout your DOM here
</body>
<html>
这对于长期代码的可维护性和可扩展性具有优势。这种方法非常适用于 jQuery 等 javascript 库。
在性能方面,您可以通过使用智能缓存策略通过不显眼的 javascript 方法获得性能提升。
有关不显眼的 javascript 的更多信息,请参见此处
addEventListener
或者它的 jQuery 版本on
\bind
是最佳实践,因为它将可视部分 HTML 与功能部分 javascript 分开。
分道扬镳。
如果代码已经写好了,我不会改变它,这并不重要。
很多人会不鼓励使用,onclick
因为“如果你想添加另一个 onclick 事件怎么办?” - 就我个人而言,我从来没有遇到过这个问题,但我可以理解。
如果您没有将链接用于单个click
事件以外的任何内容,那么onclick
很好。但是,如果您希望它是防弹的,您可能需要addEventListener
. 我实际上有我自己的addEvent
/ fireEvent
/removeEvent
三个函数来跟踪事件并为我处理浏览器的不一致(window.event
例如,引入),而且效果很好。