何时需要文档准备就绪,何时不在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中存在一个元素才能找到它。有时,这需要等到整个页面(尽管不一定是它的所有链接资源)已下载并解析到树中;有时在需要的元素之后的某个时间点包含脚本,因此根本不需要等待;有时对存在的元素使用事件委派(一个常见的示例是整个文档)。您几乎可以说这取决于偏好。

如果您的按钮具有id
btn
,则应使用
$(“#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!!!');
    });
});