在同一页面中使用JQuery和Prototype

Dón*_*nal 33 javascript jquery prototypejs

我的几个页面同时使用JQuery和Protoype.由于我升级到JQuery的1.3版本,这似乎导致了问题,因为两个库都定义了一个名为'$'的函数.

JQuery提供了一个函数noConflict(),它将$的控制放弃到可能正在使用它的其他库.所以看起来我需要浏览所有看起来像这样的页面:

<head>      
    <script type="text/javascript" src="/obp/js/prototype.js"></script>
    <script type="text/javascript" src="/obp/js/jquery.js"></script>
</head>
Run Code Online (Sandbox Code Playgroud)

并将它们更改为如下所示:

<head>      
    <script type="text/javascript" src="/obp/js/prototype.js"></script>
    <script type="text/javascript" src="/obp/js/jquery.js"></script>
    <script type="text/javascript">
        jQuery.noConflict();
        var $j = jQuery;
    </script>
</head>
Run Code Online (Sandbox Code Playgroud)

然后,我应该能够为Prototype使用'$',为JQuery使用'$ j'(或'jQuery').我并不完全乐意在每个相关页面中复制这两行代码,并期望在某些时候有人可能忘记将它们添加到新页面.我宁愿能够做到以下几点

  • 创建一个query-noconflict.js"包含" 的文件j jquery.js和上面显示的2行代码
  • 在我的所有JSP/HTML页面中导入jquery-noconflict.js(而不是jquery.js)

但是,我不确定是否可以以我描述的方式将一个JS文件包含在另一个JS文件中?当然另一种解决方案就是直接将上面两行代码添加到jquery.js中,但如果我这样做,我需要记住每次升级JQuery时都要这样做.

jmo*_*iro 19

目前你可以这样做:

<head>          
    <script type="text/javascript" src="/obp/js/prototype.js"></script>
    <script type="text/javascript" src="/obp/js/jquery.js"></script>
    <script type="text/javascript">
        var $j = jQuery.noConflict();
    </script>
</head>
Run Code Online (Sandbox Code Playgroud)

然后,使用jQuery as $j()和Prototype $().


Sam*_*son 5

似乎最简单的答案是咬紧牙关,并包括你的noConflict线.当然,如果您的页面没有使用共享标头,那么该解决方案可能不是最好的.


小智 5

此解决方案工作正常:

jQuery.noConflict();
var $j = jQuery;
Run Code Online (Sandbox Code Playgroud)

现在使用$j代替$您的 jQuery 代码,例如:

$j(document).ready(function() {
    $j('#div_id').innerfade({
         // some stuff
    });
});
Run Code Online (Sandbox Code Playgroud)