onClick Vs Observer

时间:2011-03-04 12:02:24

标签: javascript jquery onclick prototypejs observer-pattern

我想知道为什么最好使用观察者而不是直接将动作添加到onclick =“”。

例如

$('mybutton').observe('click', respondToClick);

vs

<a href="#" onclic="respondToClick()">button</a>

由于

4 个答案:

答案 0 :(得分:6)

这是一个相当常见的问题,因此我将在quirksmode.org上引用您的quality article来回答这个问题以及您可能对事件处理提出的其他问题。

以下是摘录:

<a href="somewhere.html" onclick="alert('I\'ve been clicked!')">
  

认识到这一点非常重要   事件处理的古老方式是   事实上由Netscape标准化。所有   其他浏览器,包括Explorer,   不得不顺应Netscape 2的方式   和3个处理事件,如果他们想要   JavaScript工作。因此这些   古代事件和事件处理程序的工作   在所有JavaScript浏览器中。

玩得开心。

答案 1 :(得分:2)

一般来说,大多数人会建议将你的javascript与你的html分开,以便更快地进行html页面渲染。由于跨浏览器与代码

的不兼容性,你必须更加小心第一个

答案 2 :(得分:2)

最大的原因是observe允许您通过JavaScript代码注册和注销多个观察者,而分配给onclick的灵活性要低得多。

答案 3 :(得分:2)

我的三个主要原因是:

  1. 我喜欢将我的HTML模板保持抽象。将javascript代码嵌入到标记中意味着我的代码重复使用该模板代码会受到轻微阻碍。您需要确保可以将脚本文件包含在文档的头部。 (对于某些CMS系统,配置这可能有点麻烦)
  2. 您如何删除该事件处理程序? el.onclick = null;并不总是有用。 IE有一种允许内存泄漏的方法。
  3. 通过类名或id来应用行为为你的javascript代码提供了更多的可重用性,而不是坚持使用onclick处理程序。