仅在不存在jQuery时加载jQuery会出现问题

仅在不存在jQuery时加载jQuery会出现问题,jquery,dynamic,Jquery,Dynamic,我使用的是代码,这与答案中的代码非常相似 我的问题是,代码将jQuery包含放在适当的位置,但由于某些原因,在它没有识别到jQuery已加载之后,脚本就无法识别jQuery了。我做错了什么 当您将loadjqueryance('1.7.2')行移动到检查jQuery的上方时,jQuery被正确加载。因此,我不确定您在哪里进行检查,但代码确实有效 如果您想确保在加载依赖于jQuery的JS文件之前加载了jQuery,那么可以将函数更改为在加载jQuery之后加载这些文件,或者在使用它的每个脚本之

我使用的是代码,这与答案中的代码非常相似

我的问题是,代码将jQuery包含放在适当的位置,但由于某些原因,在它没有识别到jQuery已加载之后,脚本就无法识别jQuery了。我做错了什么


当您将
loadjqueryance('1.7.2')
行移动到检查jQuery的上方时,jQuery被正确加载。因此,我不确定您在哪里进行检查,但代码确实有效

如果您想确保在加载依赖于jQuery的JS文件之前加载了jQuery,那么可以将函数更改为在加载jQuery之后加载这些文件,或者在使用它的每个脚本之前对jQuery执行检查

// Load jQueryUI
if (!jQuery) loadjQueryOnce();
loadjQueryUI();

if (!jQuery) loadjQueryOnce();
loadjQueryDepedentScript();
它很笨重,但能用。如果您能让我们更好地了解您为什么要这样做,我们可能会帮助您找到更好的解决方案

您最好只创建一个模板,其中jQuery是头中加载的第一件事:

<html>
    <head>
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
        ...
    </head>

...

看起来像是时间问题。如果您在检查之前创建了一个小延迟,那么它可以正常工作

<script type="text/javascript">
setTimeout(function() {
    if (typeof jQuery === "undefined") {
        alert('Not recognizing jQuery');
    }
}, 100);​
</script>

setTimeout(函数(){
if(jQuery的类型==“未定义”){
警报(“无法识别jQuery”);
}
}, 100);​

问题在于,在HTML调用之前,您没有等待脚本执行,它使用了你提到的博客中的代码。您需要将依赖于jQuery的代码放在
main
函数中。

那么,在运行我的loadjqueryance函数后,您建议如何包含基于jQuery的其他脚本,例如jQuery ui?使用
main
函数调用与
loadjqueryance
类似的函数,它为jQuery UI生成脚本标记。然后,在jQuery UI脚本加载和执行后,您需要另一个函数,如
main
,以运行该脚本,该脚本包含任何依赖于jQuery-UI的内容;事实证明,用正常的方式做比较容易。谢谢如果我必须运行这个延迟,我如何在我的
loadjQueryOnce()
函数之后包含其他脚本,比如jQuery ui?即使在您的示例中有100个超时,它仍然告诉我它无法识别它,尽管1000起作用。100毫秒的延迟只是为了测试,您显然可以调整它。轮询查看是否加载了jQuery可能是加载UI的一种方法,尽管这看起来很困难。是的,这一点的全部目的是使只检查和加载jQuery一次变得快速和简单。有更好的解决方案吗?除了只包含它而不检查之外,我不知道。这是用于某种插件的吗?你在做什么应用程序,在加载jQuery之前需要检查它?这是我的网页上的日常使用。一些页面上包含的一些自定义脚本需要jQuery,如果我或其他程序员忘记包含jQuery,那么让它们在代码中包含jQuery应该是这样的,所包含的脚本仍然可以运行。看起来只要记住包含它就更容易了。
<script type="text/javascript">
setTimeout(function() {
    if (typeof jQuery === "undefined") {
        alert('Not recognizing jQuery');
    }
}, 100);​
</script>