【问题标题】:check whether jquery is already defined or not检查 jquery 是否已经定义
【发布时间】:2012-07-19 07:25:35
【问题描述】:

您好,我正在尝试为我的客户创建一个插件,我将在他们的 html 中添加以下代码。

<html>
<head>
</head>

<body>
    <script type="text/javascript">
    var clientID = "123";

    (function() {
        var test = document.createElement('script'); test.type = 'text/javascript'; test.async = true;
        test.src = 'myjavascript.js';
        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(test, s);
    })();
    </script>

    <div id="addimage"></div>
</body>
</html>

在 myjavascript.js 文件中,我将调用 jquery 库。

if (typeof jQuery === "undefined") {
    var script = document.createElement('script');
    script.src = 'http://mysite.com/js/jquery-1.7.1.min.js';
    script.type = 'text/javascript';
    document.getElementsByTagName('head')[0].appendChild(script);
}


if (typeof jQuery === "undefined") {
    var script = document.createElement('script');
    script.src = 'http://mysite.com/js/fancybox.js';
    script.type = 'text/javascript';
    document.getElementsByTagName('head')[0].appendChild(script);
}

// my rest code goes here

所以我想检查客户端 html 是否已经需要调用 jquery-1.7.1.min.js,如果没有,则只在 myquery.js 中包含 1.7.1.min.js 文件

如何检查它是否已经包含。请帮忙!

【问题讨论】:

标签: jquery


【解决方案1】:

通常您使用!!variable 来查看是否设置了变量。这种方式在很多很多著名的框架中都有使用,所以我也倾向于使用它。

if(!!window.jQuery) {
    // jQuery is loaded
} else {
    // load jQuery first
}

不过,看看您的问题,您的方法也应该有效!使用typeof variable === 'undefined' 也是一种非常有效的方法。


编辑:显然这还不够信息,所以我将重写你的代码

if(!window.jQuery) {
    var script = document.createElement('script');
    script.src = 'http://mysite.com/js/jquery-1.7.1.min.js';
    script.type = 'text/javascript';
    document.getElementsByTagName('body')[0].appendChild(script);
}

【讨论】:

  • @user100311 我已经稍微更改了我的代码。如果 jQuery not 定义了你想定义它。这意味着您必须将用于加载 jQuery 的代码放在 else 块中。此外,您可以删除当前用于检查 jQuery 是否已定义的 if 语句。
  • @user100311 我已经编辑了代码,你现在应该可以复制粘贴代码了...
【解决方案2】:

除了Tim S. 回答你可以使用 $.jquery 来获取版本

var head = document.getElementsByTagName('head')[0];
if(!! jQuery && jQuery('body').jquery == '1.7.1'){

    // jquery 1.7.1 included so only put your script
    var script = document.createElement('script');
    script.src = 'http://mysite.com/js/myotherscripts';
    script.type = 'text/javascript';
    head.appendChild(script);


} else {

    // Include jquery first 
    var script = document.createElement('script');
    script.src = 'http://mysite.com/js/jquery-1.7.1.min.js';
    script.type = 'text/javascript';
    head.appendChild(script);

    // Then include your scripts
    var script = document.createElement('script');
    script.src = 'http://mysite.com/js/myotherscripts';
    script.type = 'text/javascript';
    head.appendChild(script);

}

【讨论】:

  • @tim 我这样添加 if(!! jQuery && jQuery('body').jquery == '1.7.1'){ if (typeof jQuery === "undefined") { var script = document.createElement('script'); script.src = 'http://..../js/jquery-1.7.1.min.js'; script.type = '文本/javascript'; document.getElementsByTagName('head')[0].appendChild(script); } } 并且它不起作用。
  • @user100311 查看 cmets 和我在回答中的编辑...您不能指望每个人都开始在 cmets 部分讨论一个答案 - 您必须环顾四周。您还可以查看您的个人资料(顶部栏中有一个链接),您可以在其中轻松查看以蓝色标记的新回复。
【解决方案3】:
if(typeof jQuery != "undefined") {
   $('.input-number').inputmask('+7 (999) 999-9999');
}

【讨论】:

  • 虽然此代码可能会回答问题,但提供有关它如何和/或为什么解决问题的额外上下文将提高​​答案的长期价值。
猜你喜欢
  • 2012-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-04
  • 2013-03-15
  • 2011-07-06
  • 2011-10-29
  • 1970-01-01
相关资源
最近更新 更多