在同一页面中使用JQuery和Prototype

35

我的几个页面同时使用了JQuery和Prototype。自从我升级到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>

并将它们更改为以下样式:

<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>

我应该能够在Prototype中使用“$”,在JQuery中使用“$j”(或“jQuery”)。但我不太满意在每个相关页面中重复这两行代码,并且预计某个时候有人很可能会忘记将它们添加到新页面中。我希望能够执行以下操作:

  • 创建文件jquery-noconflict.js,其中“包含”jquery.js和上面显示的2行代码
  • 在所有我的JSP / HTML页面中导入jquery-noconflict.js(而不是jquery.js

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


我提供的答案对您有用吗? - PrimosK
1
不知道,自从我问这个问题已经过去3年了... - Dónal
好的.. :) 我错过了那个.. :) 但是我认为原理是正确的,因为我试过了... - PrimosK
1
显然这是旧的,但我遇到了一个情况,需要在63个HTML文件中更改5行代码(我没有建立这个网站)。一些正则表达式替换和文件替换在几秒钟内完成了任务。Notepad++可以做到有限的程度,而Sublime文本编辑器则像冠军一样完成了任务。 - David Hobs
@DavidHobs:Sublime加一!它是自切片面包以来的最佳事物! - ClarkeyBoy
12个回答

0
如果我是你,我会像你上面所说的那样将我的无冲突代码放入JavaScript包含文件中,然后找出一些过程,在其中我将设置这些需要在所有页面中包含的内容。如果您正在使用纯HTML文件,并且没有任何服务器端的模板/脚本功能来包含文档中的内容,则始终可以使用服务器端包含的可能性。
无论哪种方式,当您需要更新分析代码或站点页脚时,每次更新每个页面时遇到的痛苦都会再次出现。

0

在 jQuery 之下使用原型(Prototype)如下:

<script type="text/javascript" src="news/jquery-1.2.3.pack.js"></script>
<script type="text/javascript" src="news/jquery.easynews.js"></script>


<script type="text/javascript" src="lb/js/prototype.js"></script>
<script type="text/javascript" src="lb/js/scriptaculous.js?load=effects"></script>
<script type="text/javascript" src="lb/js/lightbox.js"></script>
<link href="lb/css/lightbox.css" rel="stylesheet" type="text/css" />

在这种情况下,jQuery函数会出现问题,因此您可以使用这个来解决问题:
<script type="text/javascript">
     jQuery.noConflict();
     var JQ = jQuery;//rename $ function
</script>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接