何时需要文档,何时不在JQuery中

Jim*_*Jim 3 jquery

我不知道什么时候我们使用$(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>  
Run Code Online (Sandbox Code Playgroud)

在不使用$(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">  
    $(document).ready(function(){
        $("btn").click(function(){
            alert('Hello!!!');
        });
    });

        $(function() {  
            $("textarea").htmlarea();  
        });  
</script>  
Run Code Online (Sandbox Code Playgroud)

当我按下按钮时id="btn",它什么也没做.
我做错了吗?

rni*_*nty 6

在第二个例子,假设你实际上有一个按钮idbtn地方,问题是,你缺少#的ID来选择:

// ? here
$("#btn")
Run Code Online (Sandbox Code Playgroud)

调用$一个函数和调用$(document).ready与相同功能是等效的.

要回答"我什么时候需要等待ready"的问题,答案很简单,你需要等到DOM中存在一个元素才能找到它.有时,需要等到整个页面(尽管不一定是所有链接的资源)都已下载并解析为树; 有时你会在你需要的元素之后的某个时刻包含你的脚本,所以你根本不必等待; 有时你会对存在的元素使用事件委托(一个常见的例子就是整个文档).你几乎可以说这取决于偏好.