【问题标题】:document ready not working when I have 2 jquery libraries当我有 2 个 jquery 库时,文档准备不工作
【发布时间】:2020-05-09 09:27:53
【问题描述】:

我使用了一个包含

的插件

jquery-1.12.4.min.js

作为其资源之一。但在我的项目中,我使用的是

jquery-3.4.1.min.js.

为了不让他们发生冲突,我这样做了:

<script src="https://code.jquery.com/jquery-3.4.1.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>
<script>var $x = jQuery.noConflict();alert("Version: "+$x.fn.jquery);</script> 
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
<script>var $y = jQuery.noConflict();alert("Version: "+$y.fn.jquery);</script>

即使函数 noConflict() 正在工作 - 由于可以在警报中看到相应 jqueries 的版本,我收到指向 $(document).ready(function(){ 的错误。我想我必须指定我将使用哪个版本?如果是,如何?我找不到执行此操作的语法。请帮忙...

【问题讨论】:

  • 兄弟你只能使用一个 jquery
  • @FrancisCordova 如果您刚刚阅读了您链接的文章:“该方法释放 $ 符号以供其他 JavaScript 框架使用”。也就是说,只需使用您定义的标识符($x$y)即可实现不冲突的 jQuery。

标签: javascript jquery algorithm syntax


【解决方案1】:

首先,最好将$.noConflict() 替换为$.noConflict(true),以表明您希望从冲突名称中删除所有jQuery 实例。

所有这一切,使得使用$y$x 来引用具有精确版本的jQuery 成为可能。

所以不是$(document).ready(function(){

你会做$y(document).ready(function(){$x(document).ready(function(){

【讨论】:

    【解决方案2】:

    你已经正确使用了 noConflict 函数,但你不能在变量名中使用 '$',因为调用 noConflict 函数会释放 '$' 变量以供其他 javascript 框架使用。

    将变量名称更改为 x 和 y 并尝试一下。

    您也不能使用$(document).ready(function(){,因为在您的情况下,您已经将 jquery $ 变量的别名更改为 x 和 y。

    <html>
    <head>
    <script src="https://code.jquery.com/jquery-3.4.1.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>
    <script>var x = jQuery.noConflict();</script> 
    <script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
    <script>var y = jQuery.noConflict();</script>
    <script type="text/javascript">
    x(document).ready(function(){
    
    alert('ready from :' + x.fn.jquery);
    });
    
    y(document).ready(function(){
    
    alert('ready from :' + y.fn.jquery);
    });
    </script>
    </head>
    </html>

    【讨论】:

      【解决方案3】:

      感谢您的努力。我已经弄清楚如何在我编写的以前的代码中保留 $ 。我所做的是:

      <script src="https://code.jquery.com/jquery-3.4.1.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>
      <script>var $ = jQuery.noConflict();alert("Version: "+$x.fn.jquery);</script> 
      <script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
      <script>var $y = jQuery.noConflict();alert("Version: "+$y.fn.jquery);</script>
      

      由于我使用 $ 作为我一直用于我的项目的 jquery 版本的容器,我不需要更改原始代码上以 $ 开头的代码。

      但是为了使用我与我的项目集成的插件使用的旧 jquery 版本,我必须使用 $y ( ei $y(document).ready(function(){ }); 和 $y( '#field1id').val(); ).

      我的项目现在已经开始了。感谢您的意见。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-27
        • 2023-04-03
        • 1970-01-01
        相关资源
        最近更新 更多