Javascript onClick与Observer

Javascript onClick与Observer,javascript,jquery,onclick,prototypejs,observer-pattern,Javascript,Jquery,Onclick,Prototypejs,Observer Pattern,我想知道为什么使用观察器比直接将操作添加到onclick“”中更好 例如 $('mybutton')。观察('click',respondToClick); vs 谢谢这是一个相当常见的问题,所以我会让您访问quirksmode.org上的一个网站,它会回答这个问题以及您可能遇到的关于事件处理的其他问题 以下是摘录: <a href="somewhere.html" onclick="alert('I\'ve been clicked!')"> 认识到这一点非常重要 这是一种

我想知道为什么使用观察器比直接将操作添加到onclick“”中更好

例如

$('mybutton')。观察('click',respondToClick);
vs

谢谢

这是一个相当常见的问题,所以我会让您访问quirksmode.org上的一个网站,它会回答这个问题以及您可能遇到的关于事件处理的其他问题

以下是摘录:

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

认识到这一点非常重要 这是一种古老的事件处理方式 事实上是由Netscape标准化的。全部的 其他浏览器,包括浏览器, 必须遵循Netscape 2的方式 如果他们愿意的话,还有3个处理过事件 JavaScript开始工作。所以这些 古代事件和事件处理程序可以工作 在所有JavaScript浏览器中


享受阅读乐趣。

一般来说,大多数人会建议将javascript与html分开,以便更快地呈现html页面。但是,对于第一个,您必须更加小心,因为跨浏览器与代码不兼容

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

我的三个主要原因如下:

  • 我喜欢让我的HTML模板保持抽象。将javascript代码嵌入到标记中意味着我的代码对该模板代码的重用会受到一些阻碍。您需要确保可以将脚本文件包含在文档的头部。(对于某些CMS系统,配置起来可能有点麻烦)
  • 如何删除该事件处理程序
    el.onclick=null并不总是有效。IE有一种允许内存泄漏的方法
  • 通过类名或id应用行为为javascript代码提供了比坚持使用onclick处理程序更好的可重用性
  • <a href="somewhere.html" onclick="alert('I\'ve been clicked!')">