何时需要文档准备就绪,何时不在JQuery中
我不确定何时使用何时需要文档准备就绪,何时不在JQuery中,jquery,Jquery,我不确定何时使用$(document).ready(function(){})
$(document).ready(function(){})当我们可以声明一个$(function(){}
而不需要在$(document.ready(function(){});
例如,以下代码段:
<body>
<textarea id="test" cols="50" rows="15"><p><h3>Test H3</h3>This is some sample text to test out the <b>WYSIWYG Control</b>.</p></textarea>
<script type="text/javascript">
$(function() {
$("textarea").htmlarea();
});
</script>
当我按下带有id=“btn”
的按钮时,它什么也不做。
我做错了吗?在第二个示例中,假设您确实在某处有一个id为btn
的按钮,问题是您缺少一个按id选择的按钮:
// ⌄ here
$("#btn")
用一个函数调用$
,用同一个函数调用$(document).ready
要回答“我什么时候需要等待ready
”的问题,答案很简单,您需要等到DOM中存在一个元素才能找到它。有时,这需要等到整个页面(尽管不一定是它的所有链接资源)已下载并解析到树中;有时在需要的元素之后的某个时间点包含脚本,因此根本不需要等待;有时对存在的元素使用事件委派(一个常见的示例是整个文档)。您几乎可以说这取决于偏好。如果您的按钮具有idbtn
,则应使用$(“#btn”)
选择器,如下所示:
$(document).ready(function(){
$("#btn").click(function(){
alert('Hello!!!');
});
});
关于第一个问题:
在
$(document.ready(function(){…})
和$(function(){…})
之间没有区别,您可以使用它们中的任何一个。在文档中声明的函数。ready
事件在dom准备就绪时执行。其他函数,(在document.ready
之外)在触发相应事件时调用。当您希望在网页中“提前”发生事情时,有两个事件很重要:
- DOM在浏览器内存中构造。完成此操作后,
将激发$(document).ready
- 所有资源——图像、样式表、视频、脚本等——都已下载。这是
事件onload
脚本标记中运行一些内容来完成工作
还要注意,您采用的两种方法是等效的,它们都是“就绪”事件处理程序
话虽如此,但这一切都与您的问题无关。$(“btn”)
无法解决任何问题,因为您的选择器不正确。没有名为button的元素。您可能指的是id为btn
,在这种情况下,您希望执行此$(“#btn”)
您应该始终使用$(文档)。就绪(函数(){}
真正引导应用程序,除非有特殊需要,否则不使用它,因为一旦DOM准备好被遍历,它们就会被执行
然而,在您的示例中,您的两个函数做了相同的事情,我更喜欢使用$(document).ready()
,因为它更显式和可读
代码不起作用的原因是,您没有使用正确的选择器,使用$(“btn”)将查找html元素,例如,但找不到任何元素,因为它是无效的html。您应该使用$(“#btn”)
选择您的按钮。“#”用于查找id,而“.”可用于选择具有特定类属性的多个项目。在触发相应事件时调用。
但这意味着dom已准备就绪?因此$(文档).ready
是冗余的吗?它不是冗余的,但是您可以使用$(文档).ready(函数(){…})
或$(函数(){…})
+1来强调在$(文档).ready()中放置引导代码的重要性。
$(document).ready(function(){
$("#btn").click(function(){
alert('Hello!!!');
});
});