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

时间:2013-11-09 23:28:58

标签: 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>

例如以下代码段:

$(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> 但以下内容正常工作:

id="btn"

当我按下{{1}}按钮时,它什么也没做 我做错了吗?

5 个答案:

答案 0 :(得分:6)

在第二个示例中,假设您确实在某处有一个id btn的按钮,问题是您错过了#来按ID选择:< / p>

// ⌄ here
$("#btn")

使用一个函数调用$并使用相同的函数are equivalent调用$(document).ready

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

答案 1 :(得分:1)

如果您的按钮 id btn,则应使用$('#btn')选择器,如下所示:

$(document).ready(function(){
    $("#btn").click(function(){
        alert('Hello!!!');
    });
});

对第一个问题:

$(document).ready(function () { ... })$(function() { ... })之间存在无差异,您可以使用其中任何一种。

答案 2 :(得分:1)

除非特别需要不使用它,否则您应该始终使用$(document).ready(function(){})来引导应用程序,因为一旦准备好遍历DOM,它们就会被执行。

在你的例子中,你的两个函数做同样的事情,我更喜欢使用$(document).ready()因为它更明确和可读。

您的代码无效的原因是因为您没有使用正确的选择器,使用$(“btn”)会查找html元素,例如但是找不到任何因为它是无效的HTML。您应该使用$("#btn")选择按钮。 '#'用于查找id而'''。可用于选择具有特定类属性的多个项目。

答案 3 :(得分:0)

当dom准备就绪时,document.ready个事件中声明的函数将被执行。其他函数(在document.ready之外)在触发相应的事件时被调用。

答案 4 :(得分:0)

当您希望在网页中“早期”发生事情时,有两件事情很重要:

  • DOM在浏览器内存中构建。完成后,$(document).ready会触发。
  • 已下载所有资源 - 图像,样式表,视频,脚本等。这是onload事件。

如果你没有通过网络获取任何东西(或者没什么太大的东西),很可能两个事件都是同时发生的,你可以简单地在底部的script标签中运行一些东西。要做的工作的页面。

另请注意,您采用的两种方法是等效的。他们都是“准备好”的事件处理程序。

说了这么多,没有一个与你的问题有关。 $("btn")无法解决任何问题,因为您的选择器很糟糕。没有名为button的元素。您可能需要btn的ID,在这种情况下,您要执行此操作$("#btn")