on(事件)属性的Javascript替换

时间:2014-02-11 10:03:09

标签: javascript jquery html javascript-events

如果这听起来像是在征求意见,抱歉,我并没有表现得更好。

我的问题是,为什么有必要用匿名函数替换像onclick这样的属性?有什么好处?

例如,我有一个需要更新的网页,所以我需要替换

<input id="text" onfocus="this.blur()">

通过

<input id="text">
.
.
<script>
  $('#text').focus(function(){this.blur()});
<script>

但这是做什么的?这比原来的具体优势是什么?我搜查了,但我找不到任何真正的理由,只有意见。

3 个答案:

答案 0 :(得分:2)

有很多理由不使用dom0事件。 你可以在“不引人注目的javascript”主题下找到其中一些。 http://en.wikipedia.org/wiki/Unobtrusive_JavaScript

解耦标记和行为是最明显的一个

答案 1 :(得分:1)

主要优点是清晰度和灵活性:

  • 限制ad-hoc javascript代码被认为是一种很好的做法,因为所有的javascript逻辑都可以在一个地方找到。
  • 它允许您编写解耦代码和“非阻碍”javascript,这基本上意味着您可以轻松更改网页的行为而无需触及HTML。
  • 您可以说,在事件处理程序上使用“onenvent”属性与在附加的CSS文件上使用style属性完全相同。
  • 使用on()函数可以根据需要添加任意数量的事件侦听器。

答案 2 :(得分:1)

  • 一个很好的优点是,这可以使您的HTML更简单&amp;更轻,可以加载和渲染更快,而你的底部的JavaScript仍在加载。如果你考虑性能,最好在一开始加载HTML(&amp; css),最后加载脚本。

  • 此外,它将代码与标记分开,使所有内容更少 搞砸了,更系统,更容易调试。

  • 你不能简单地在属性中编写庞大的java脚本代码就会变得不方便,无论如何都要为复杂的逻辑编写函数。