Javascript 如果代码位于底部,那么将$(document).ready函数放在下面有什么意义?

Javascript 如果代码位于底部,那么将$(document).ready函数放在下面有什么意义?,javascript,jquery,html,Javascript,Jquery,Html,对于Jquery来说,这里是相当新的。。。。但有一件事我被告知并正在做,那就是在读取html后在页面底部添加Javascript 现在,我看到人们添加$(document).ready(function(),即使代码位于页面底部。DOM不是在读取HTML时逐步构建的吗?在读取HTML结束时,DOM不是应该自动准备好吗?因此,添加此检查有何意义 例如,小型演示: <ul> <li id="draggable" class="ui-state-highlight">D

对于Jquery来说,这里是相当新的。。。。但有一件事我被告知并正在做,那就是在读取html后在页面底部添加Javascript

现在,我看到人们添加$(document).ready(function(),即使代码位于页面底部。DOM不是在读取HTML时逐步构建的吗?在读取HTML结束时,DOM不是应该自动准备好吗?因此,添加此检查有何意义

例如,小型演示:

<ul>
    <li id="draggable" class="ui-state-highlight">Drag me down</li>
</ul>

<ul id="sortable">
    <li class="ui-state-default">Item 1</li>
    <li class="ui-state-default">Item 2</li>
    <li class="ui-state-default">Item 3</li>
    <li class="ui-state-default">Item 4</li>
    <li class="ui-state-default">Item 5</li>
</ul>
<script>
alert("In Page");
</script>

</div><!-- End demo -->

<script>
$(function() {
    alert("Dom is READY");
    $( "#sortable" ).sortable({
    revert: true
    });

    $( "#accordion" ).accordion();
});
</script>

  • 将我向下拖动
    第1项 第2项 第3项 第4项 第5项
警告(“第页”); $(函数(){ 警报(“Dom已准备就绪”); $(“#可排序”)。可排序({ 回复:真 }); $(“#手风琴”)。手风琴(); });

“在页面中”总是出现在第一位……是因为HTML不够“大”吗?

事实是document.ready和文档底部几乎是一样的,因为在文档结束时,所有控件都在那里。我个人还是更喜欢document.ready,因为它是JQuery框架识别文档结束的方式(理想情况下,我们应该坚持框架推荐的方式)其次,它将处理任何错误地移动代码的人。

当您以这种方式内联编写代码时,假设您在头部加载jQuery,则可能不需要将文档准备就绪


当您的页面代码通过文档中的外部JavaScript资源(可能不在底部)加载时,情况开始有所不同。这样做的原因主要是为了让您的浏览器可以缓存代码,从而减少网络开销。

这不是有点像问问题吗“如果我一直穿着裤子到处走,为什么我需要系安全带?”也许更好的问题是“如果它基于DOM事件运行,为什么我要将所有代码放在底部?”相关(但不是dup IMO)@ledorfier-当我读到这一点时,我差点从椅子上摔下来;)这真是太好笑了。+1-它还明确地表示,代码在页面加载之前不会运行。这是我们在专注于解决另一个问题时可能不会马上看到的。