【问题标题】:Conflicts in using both jQuery and prototype使用 jQuery 和原型的冲突
【发布时间】:2011-04-22 19:33:34
【问题描述】:

是否可以同时使用 jQuery 和原型脚本而没有任何冲突或覆盖变量?我不知道自从几个月前我上次使用原型后,这个问题是否已经修复。

【问题讨论】:

    标签: jquery


    【解决方案1】:

    是否可以同时使用 jQuery 和原型脚本而不会出现任何冲突或被覆盖的变量?

    当然。只需使用jQuery.noConflict()

    【讨论】:

      【解决方案2】:

      $ 被两者使用,我相信这是冲突的根源。

      由于您之前的代码在原型中,所以最好保持原样,您只需确保没有 jQuery 代码与原型发生冲突 $。

      为此,将您的代码包装在一个函数中并将 jQuery 对象传递给该函数。按照我下面的描述做:

      如果您的代码是:

      /* begin  */
      
      // your variables
      // your functions which $ goes here
      // other stuff
      
      /* end */
      

      然后,将其转换如下:

      (function($) {
      
        /* begin  */
      
        // your variables
        // your functions which uses $ is safe now; inside this code block.
        // other stuff
      
        /* end */
      
      })(jQuery); // passing jQuery removes conflict, ta-da :-)
      

      【讨论】:

      • 导入库后仍需调用jQuery.noConflict(),否则可能会覆盖全局“$”(取决于先导入哪个库)。
      • @Pointy:我不确定......在传递 JQuery 之后,我认为 $ 只是函数定义的范围的另一个局部变量,而 global $ 在该函数中没有范围...... .所以来自 JQuery 的 $ 仅在该函数中使用/更新(这样想)
      • 当您在自己的<script> 标记中导入 jQuery 库时,全局“$”会被覆盖,您仍然需要在此处执行此操作。
      • @Pointy 我明白了,不知道这个关于默认覆盖的信息......但我认为如果有人想在他的代码中使用 $ 而 $ 来自 JQuery,那么他/她不想要global $(不管它是什么)........另一方面,如果他/她想在 JQuery 中使用 global $(由 other 定义),那么使用 JQuery 表示法而不是 $.. 会很方便。 ....虽然可悲,但 jquery 默认情况下应该调用 noconflict
      • 诀窍是 jQuery 提供了一种方法来“恢复”“$”的先前值 - 您将库导入到 <script> 标记中,然后您立即使用一点 in-只执行jQuery.noConflict(); 的行脚本,它修复了备份。
      猜你喜欢
      • 2010-09-13
      • 1970-01-01
      • 1970-01-01
      • 2011-03-08
      • 2010-11-01
      • 2012-01-09
      • 2011-01-29
      • 2013-05-28
      • 2012-01-15
      相关资源
      最近更新 更多