我对 jQuery 中的 document.ready 有点困惑。
你什么时候在里面定义javascript函数
$(document).ready() 什么时候不呢?
将所有 javascript 代码放入 $(document).ready() 中是否足够安全?
如果你不这样做会发生什么?
例如,我使用常用的 jQuery 选择器,当您单击内容时它会执行某些操作。如果不用 document.ready 包装这些有什么危害?
如果有人在页面加载之前的一瞬间点击该元素,是否只会导致问题?或者它会导致其他问题吗?
什么时候在 $(document).ready() 中定义 javascript 函数,什么时候不定义?
如果这些函数应该是全局可访问的(这可能表明您的应用程序设计不好),那么您必须在ready
处理程序。
将所有 javascript 代码放入 $(document).ready() 中是否足够安全?
往上看。
如果你不这样做会发生什么?
取决于您的 JavaScript 代码正在做什么以及它位于何处。最坏的情况是你会遇到运行时错误,因为你试图在 DOM 元素存在之前访问它们。如果您的代码位于head
并且您不仅定义了函数,而且已经尝试访问 DOM 元素。
例如,我使用常用的 jQuery 选择器,当您单击内容时它会执行某些操作。如果不用 document.ready 包装这些有什么危害?
本身并没有“伤害”。如果脚本位于head
,因为 DOM 元素还不存在。这意味着,jQuery 无法找到处理程序并将其绑定到它们。
但是如果你把脚本放在结束之前body
标签,那么 DOM 元素就会存在。
为了安全起见,每当您想要访问 DOM 元素时,请将这些调用放在ready
事件处理程序或仅在 DOM 加载后调用的函数。
As the jQuery 教程 http://docs.jquery.com/Tutorials%3aGetting_Started_with_jQuery(你应该阅读它)已经指出:
由于我们在使用 jQuery 时所做的几乎所有事情都是读取或操作文档对象模型 (DOM),因此我们需要确保在 DOM 准备就绪后立即开始添加事件等。
为此,我们为文档注册一个就绪事件。
$(document).ready(function() {
// do stuff when DOM is ready
});
举一个更完整的例子:
<html>
<head>
<!-- Assuming jQuery is loaded -->
<script>
function foo() {
// OK - because it is inside a function which is called
// at some time after the DOM was loaded
alert($('#answer').html());
}
$(function() {
// OK - because this is executed once the DOM is loaded
$('button').click(foo);
});
// OK - no DOM access/manipulation
alert('Just a random alert ' + Math.random());
// NOT OK - the element with ID `foo` does not exist yet
$('#answer').html('42');
</script>
</head>
<body>
<div id="question">The answer to life, the universe and everything</div>
<div id="answer"></div>
<button>Show the answer</button>
<script>
// OK - the element with ID `foo` does exist
$('#answer').html('42');
</script>
</body>
</html>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)