jquery-是否需要$(文档).准备就绪?

jquery-是否需要$(文档).准备就绪?,jquery,Jquery,我正在阅读一篇在线教程,其中说如果正好位于的$(文档)上方,则不需要准备好,因为此时文档已加载 这是真的吗 问题2> Q3>为什么我们在这里使用$link?为什么我们选择使用$link而不是var-link <script> $(window).scroll(function() { $link = $('nav a[hash=#first]'); $link.addClass('selected'); }); </script> $(窗口)。滚动(函数(){

我正在阅读一篇在线教程,其中说如果
正好位于
$(文档)上方,则不需要准备好
,因为此时文档已加载

这是真的吗

问题2>

Q3>为什么我们在这里使用$link?为什么我们选择使用
$link
而不是var-link

<script>
$(window).scroll(function() {
  $link = $('nav a[hash=#first]');
  $link.addClass('selected');
});
</script>

$(窗口)。滚动(函数(){
$link=$('nava[hash=#first]”);
$link.addClass('selected');
});

谢谢你,那是不对的。如果是在尸体后面,那就对了。有关更多信息和方法,您可以查看这篇文章。是和否。也许jQuery在到达之后仍然会做一些事情,但是如果您只是尝试查找之前在主体中加载的元素,它将工作

问题2。它创建一个指向窗口的jQuery对象。它不是一个jQuery选择器,$(document)或$(document.body)也不是-在这些函数中,您将一个节点传递给jQuery,而不是一个选择器

第三季度。它把它藏起来了。通过执行
$link=$('nava[hash=#first]”)
我们将结果缓存/分配给$link,就像我们做了两次
$('nava[hash=#first]')
一样,然后jQuery必须找到该结果两次-如果您的所有调用都没有缓存,这可能会变得非常密集。您还应该使用
var$link=$('nava[hash=#first]”)
,以确保未全局定义
$link
,因为这是错误的(由于变量冲突)


作为一般做法;任何使用DOM元素的内容都应该在文档准备就绪之后(以确保它们已经加载并且jQuery已经准备好使用它们),任何不使用DOM元素的内容都应该在文档准备就绪之后(因为不需要等待)。

Q1有点像真的。详情载于:

虽然JavaScript提供了在呈现页面时执行代码的加载事件,但在完全接收所有资产(如图像)之前,不会触发此事件。。。当使用依赖CSS样式属性值的脚本时,在引用脚本之前引用外部样式表或嵌入样式元素非常重要

在结束正文标记之前(或之后)插入代码,而不使用.ready()通常可以正常工作,因为当浏览器的解析器到达正文末尾时,dom已经足够完整,您可以开始使用选择器等


Q2“窗口”是一个;它是DOM的一部分,但不需要以.ready(function(){})样式引用它,因为正在加载的HTML不会以任何方式更改该对象以影响其.scroll事件。

Hello balupton,我还有一个问题列为Q3。如果可能的话,你可以看一下吗?谢谢你感谢你提供了这个有用的链接。最美好的祝福
$(document).ready(function() {

});
<script>
$(window).scroll(function() {
  $link = $('nav a[hash=#first]');
  $link.addClass('selected');
});
</script>