Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript document.ready when jQuery';在body标签的前面 你好 欢迎 $(函数(){ //$未定义 });_Javascript_Jquery - Fatal编程技术网

Javascript document.ready when jQuery';在body标签的前面 你好 欢迎 $(函数(){ //$未定义 });

Javascript document.ready when jQuery';在body标签的前面 你好 欢迎 $(函数(){ //$未定义 });,javascript,jquery,Javascript,Jquery,在执行函数之前,是否有办法等待文档加载并加载jQuery?否 您在引用$之前,它还没有存在,这根本不起作用 假设存在js/jquery.js,这将起作用: <html> <head> <title>Hello</title> </head> <body> <h1>Welcome</h1> <script>

在执行函数之前,是否有办法等待文档加载并加载jQuery?

否 您在引用
$
之前,它还没有存在,这根本不起作用

假设存在
js/jquery.js
,这将起作用:

<html>
    <head>
        <title>Hello</title>
    </head>
    <body>
        <h1>Welcome</h1>


        <script>
            $(function() {
                // $ is undefined
            });
        </script>
        <script src="js/jquery.js"></script>
    </body>
</html>
让你变得简单-

<script src="js/jquery.js"></script>
<script>
         // your code goes here
</script>
</body>
</html>

你好
欢迎
$(函数(){
//$未定义
});
从技术上讲,你可以

<html>
<head>
    <title>Hello</title>
</head>
<body>
    <h1>Welcome</h1>

    <script src="js/jquery.js"></script>

    <script>
        $(function() {
            // $ is undefined
        });
    </script>
</body>
这似乎也是可能的,但在旧浏览器中可能无法可靠地工作

function main() {
  if (! window.jQuery) {
    setTimeout(main, 100);
    return;
  }
  // Some code that uses jQuery
}

setTimeout(main, 100);

我觉得这不是一个好的解决方案,但是如果你真的需要,你可以加载jQuery,就像谷歌加载JavaScript来提供分析服务一样。之后,您可以编写更多代码来检测它何时完成加载,并执行包含您想要执行的操作的回调

从该站点获取和修改的粗略演示


颠倒两个脚本标记的顺序还不够好?在使用jquery之前,您需要引用jquery。为什么不先加载jquery,然后进行文档准备呢。DocumentReady是jquery的一部分,因此如果没有它,就不可能使用它jquery@paul如果他把脚本放在与现在完全相同的位置,就会抛出相同的错误。vs body结尾不是问题所在。@AD7six我对这一点的理解可能有缺陷,但问题是加载JS会阻止其他活动,并且将JS放在最后至少会让部分页面有机会呈现,这样用户在加载JS时可以看到一些东西,而不是一个空白屏幕。也许这对仍在拨号或其他低速数据上的少数用户来说仍然很重要,我认为对其他所有人来说,这都在亚秒范围内。有没有办法在执行函数之前等待文档加载并加载jQuery?@WearetheWorld您可以使用scriptloader,但这似乎不是必需的,也不符合您的兴趣。听起来你对一个“更大”的问题选择了错误的解决方案——你想做什么?
function main() {
  if (! window.jQuery) {
    setTimeout(main, 100);
    return;
  }
  // Some code that uses jQuery
}

setTimeout(main, 100);
window.onload = function() {
  // Some code that uses jQuery
};
if(!(window.jQuery)) {
    var s = document.createElement('script');
    s.setAttribute('src', '//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js');
    s.setAttribute('type', 'text/javascript');
    document.getElementsByTagName('head')[0].appendChild(s);
}