我正在阅读一个在线教程,其中说如果 <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/