将JavaScript调用放在$(document).ready(function(){并将它们放在HTML中有区别吗?

时间:2010-06-17 20:16:02

标签: javascript jquery html dom

在$(document).ready(function(){中放置javascript调用(例如blur,onclick等)之间是否存在差异,性能或效率,而不是将它们放在HTML中?

谢谢!

3 个答案:

答案 0 :(得分:3)

我认为“在DOM中”你的意思是:

<a href='#' onclick='someCodeHere()'>Click Me</a>

正确?如果是这样的话,那就不是性能,而是可维护性和功率。使用jQuery(因为你在jQuery术语中提到了“ready”处理程序)来绑定你的事件让框架负责管理多个处理程序,并处理浏览器差异。

事实上,有时候根本不直接绑定元素会更好。相反,您可以使用jQuery“实时”或“委托”机制来帮助减少实际的处理程序绑定并提供更动态的DOM。

答案 1 :(得分:0)

我不太明白将它们放在DOM中的含义。但是,如果你的意思是在你体内的脚本标签内。 document.ready事件在加载图像之前执行,它为javascript操作节省了时间

答案 2 :(得分:0)

我同意使用jQuery或其他更优雅,并且具有不引人注目的js。这种方式清晰可见,易于扩展。

我只想提一下我所有这一切的快速问题,它涉及生成的代码(即来自框架的html)。就我而言,Apache Trinidad是JSF的一部分。当trinidad生成HTML时,它包含内联javascript调用,如onclick='submitForm(..)'

我正在修改现有的自定义内联调用以使用jQuery,例如:

<tr:commandLink onClick="doStuff()" />

生成html,如:

<a href="#" onclick="doStuff(); submitForm(..)" />

现在,如果javascript调用是内联的,如果从方法返回false,则onClick的其余部分将不会执行。但是,当使用非突兀的jQuery时,内联方法不会被停止(不管怎么说都不容易)。

我想我所说的是“厌倦了框架”: - )