jquery - $(document).ready 有必要吗?

标签 jquery

我正在阅读一个在线教程,其中说如果 <script></script>就在 </body> 之上$(document).ready没有必要,因为此时文档已加载。

问题1>这是真的吗?

问题2>

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js"></script>
<script src="jquery.viewport.min.js"></script>

<script>
$(window).scroll(function() { // this line will track all mouse scroll event

});
</script>

$(window) 是什么意思?这是一个 jquery 选择器吗?如果是,那么前面的声明看起来是正确的,因为我们不必将其包含在其中

$(document).ready(function() {

});

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

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

谢谢

最佳答案

Q1。是和不是。也许 jQuery 在到达之后仍然会做一些事情,但如果你只是想找到一个之前在正文中加载的元素,它会起作用。

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

第三季度。它缓存它。通过执行 $link = $('nav a[hash=#first]'); 我们将结果缓存/分配给 $link,就像我们执行 $('nav a[hash =#first]') 两次,然后 jQuery 必须找到该结果两次 - 如果您的所有调用都没有被缓存,这可能会变得非常密集。您还应该使用 var $link = $('nav a[hash=#first]');,以确保 $link 没有全局定义 - 因为很糟糕(由于变量冲突)。

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

关于jquery - $(document).ready 有必要吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3528198/

相关文章:

javascript - 如何将 $(this) 传递给回调函数

javascript - GetOrgChart 值未在 jquery 验证器中更新

javascript - 当鼠标移动到带有jquery的文本上时显示图片?

jquery - 颜色框未正确显示内容

javascript - ajax 加载内容上的 zurb 基础和事件

javascript - 带有文本的 CSS 动画故障

jquery - 使用 Parsley.JS 和 select2 在输入字段上方显示错误消息

javascript - 带 ID 的 CallAjax

javascript - var checkValue - Jquery - 如何更改语言?

javascript - jquery slideup 和 bootstrap 的警报(只显示一次)