2011-03-04 204 views
2

我想知道为什么使用观察者更好,而不是直接将操作添加到onclick =“”。onClick vs观察员

例如。

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

vs 

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

感谢

回答

6

这是一个相当普遍的问题,所以我会向您推荐一个quality article上quirksmode.org,回答这个问题,其他的问题,你可能对事件处理。

下面是摘录:

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

认识到事件处理 这古老的方式是 事实上由Netscape规范是非常重要的。所有 其他浏览器,包括Explorer, 必须符合Netscape 2 和3处理事件的方式,如果他们想要 JavaScript才能工作。因此这些 古代事件和事件处理程序在所有JavaScript浏览器中工作 。

玩得开心阅读。

2

一般来说,大多数人会建议保持你的JavaScript与你的HTML分开,以便更快的HTML页面呈现。由于跨浏览器不兼容性,代码

2

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

2

对我来说,主要有三个原因是这样:

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