jQuery 文档.ready

2023-12-20

我对 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(使用前将#替换为@)

jQuery 文档.ready 的相关文章

随机推荐

  • Javafx - 应用程序类可以是控制器类吗

    我目前正在自学 JavaFX 并且我已经采用了一个简单的示例程序 该程序对视图进行了硬编码 并将其转换为使用 FXML 的程序 主要是为了我可以使用 SceneBuilder 来构建 UI 我没有编写单独的控制器类 而是使用应用程序类 因此
  • 詹金斯分支说明符不被遵守

    我有一个 Jenkins 构建配置为从 Gitlab 存储库中提取 我已在构建配置中指定分支说明符仅从一个特定分支中提取 Branch Specifier blank for any origin development 然而 无论提交被推
  • 如果基本 href 设置为“/”以外的值,AngularJS 漂亮的 url 无法在页面刷新时工作

    我是 AngularJS 的新手 我目前在为我的视图编写漂亮的网址时遇到问题 我已经设置了 locationProvider html5Mode true 去除 来自地址栏中显示的 url 但是 这样做后我无法重新路由到所需的视图 我不断收
  • SignalR 背板的可靠性如何?

    对于所有消息是否会到达所有订阅节点的问题 SignalR Backplane 的可靠性如何 底层是否使用可靠的协议 或者消息是否有可能丢失 显然 例如 由于某些网络问题 一个节点可能会关闭一段时间 当再次可达时 SignalR Backpl
  • 如何将 int 变量分配给 int 数组 int C++? [复制]

    这个问题在这里已经有答案了 我想实现数学运算并写入数组 我以 int 形式发送参数 但错误提示数组下标的类型 int int 无效 string clients 5 2 string products 7 string strPrices
  • 在 Web Api 2 中使用 Url.Link 和属性路由

    我想在使用 webapi 2 时向我的 http 响应添加 Location 标头 下面的方法展示了如何使用命名路由来执行此操作 有谁知道是否可以使用作为 webapi 2 的一部分发布的属性路由功能创建 Url Link string u
  • PHP 致命错误:允许的内存大小 1073741824 字节耗尽(尝试分配 16777216 字节)

    I ran 作曲家安装 on my 16 GBMacbook Pro 我得到了这个 distributor portal composer install Loading composer repositories with package
  • 循环跳过偶数

    I 代表全局变量 即名称 I 代表函数内部和外部相同的变量 当 I 1 时 事实首先被调用 这是第一个写入的值 这个值是 传递给函数的虚拟参数 N 同样的 I 现在被 Fact 内部的 DO 循环赋予初始值 2 但由于它大于 N 所以不执行
  • 增加504超时错误

    有什么方法可以使错误 504 网关超时更长 如果可以的话 如何以及更改它的文件位于何处 我在centos 6上使用nginx 根据您拥有的网关类型 您应该使用类似以下内容的内容 proxy read timeout 600s 检查文档 ht
  • 在 Yii2 中,如何从视图文件中的渲染中排除布局?

    我有一个管理员登录页面 我想在没有布局的情况下呈现它 如何在 Yii2 中渲染视图而不渲染主布局 这可以使用以下方法完成renderPartial method 您可以从官方文档中获取更多信息 这是a link http www yiifr
  • 如何使用 symfony2 包含 stripe 客户端 api。如何在 symfony2 中包含没有类的文件

    我试图将此文件包含在我的 symfony2 项目中 该项目是一个包含一堆 require 语句的文件 不幸的是 该文件不包含类 我不想为所有包含我需要的类的包含文件手动编写命名空间 所以我想知道如何以包含我需要的其他文件的方式包含该文件 我
  • CSS 关键帧仅适用于 Chrome

    我正在尝试使用关键帧制作一个简单的动画 但它仅适用于 Chrome 这是代码 为了更短的帖子 我只包含一次关键帧代码 keyframes logokf 0 background image url gfx logo1 png 20 back
  • 使用 mysql 别名从 2 个表中选择列

    我有 2 个表 table a 和 table b 两者都包含一个名为 open 的列 table a open 36 99 36 85 36 40 36 33 36 33 table b open 4 27 4 46 4 38 4 22
  • 无法使用 Flask 服务器在 IIS 上运行 dash 应用程序

    我的 IIS Windows Server 2016 上有两个网站 都使用 Dash 和 Flask 第一个是最小的working由 app py 和 web config 组成的示例 由于某种原因 我无法让第二个站点正常工作 下面附有两个
  • 如何处理 d3.layout.stack() 中缺少数据点的图层

    我正在使用 d3 stack 创建堆积面积图 但如果每层中的项目数量不相等 则会出现错误 我从这样的数据数组开始 key Group1 value date key Group1 value date key Group1 value da
  • 响应所有方法调用的 Python 类的实例

    有没有办法创建一个实例响应任意方法调用的类 我知道有一个特殊的方法 getattr self attr 当有人尝试访问实例的属性时会调用它 我正在寻找类似的东西 使我也能够拦截方法调用 期望的行为看起来像这样 class A object
  • 有没有一种算法可以检测两幅图像之间的差异?

    我正在寻找一种算法或库 可以发现两个图像之间的差异 例如在 查找错误 游戏中 并输出包含这些更改的边界框的坐标 我对 Python C 或几乎任何其他语言的算法持开放态度 如果您只是想显示差异 那么您可以使用下面的代码 FastBitmap
  • 如何从 R 中的 xlsx 文件中检测“删除线”样式

    我必须检查包含 的数据删除线 在 R 中导入 excel 文件时的格式 我们有什么方法可以检测到它们吗 欢迎使用 R 和 Python 方法 R 溶液 the tidyxl 包可以帮助你 例如 temp xlsx 其中数据位于第一张纸的 A
  • 如何在 Eclipse 中使用 Android 操作系统 VirtualBox 作为设备

    我在这里找到了有关如何运行 Android 操作系统的教程 http www javacodegeeks com 2010 06 install android os on pc with html http www javacodegee
  • jQuery 文档.ready

    我对 jQuery 中的 document ready 有点困惑 你什么时候在里面定义javascript函数 document ready 什么时候不呢 将所有 javascript 代码放入 document ready 中是否足够安全