prototype,Mootools,jQuery如何在一个页面里面共存啊?

赵开锦 发布于 2011/08/16 23:10
阅读 3K+
收藏 3

请教一个页面中同时使用了prototype,Mootools,jQuery三种框架如何解决冲突问题啊?

问题背景描述:

我现在的项目里面有一个页面,早先因为某些原因使用了prototype+QIndex,所以引入了js

<script type="text/javascript" src="js/jxt/prototype-1.4.0.js"></script>
<script type="text/javascript" src="js/jxt/QIndex.js"></script>

后来因为一些原因要在页面中使用jQuery处理一些显示特效,又引入了js

<script type="text/javascript" src="js/jquery.js"></script>

<script type="text/javascript">
            jQuery.noConflict();

</script>

最进美工在一个网站上又发现另外一个MooTools实现的特效,然后领导要求抄进来,于是又不得不引入js

<script type="text/javascript" src="js/mootools.js"></script>
<script type="text/javascript" src="js/home.js"></script>

现在问题就来了,经测试发现Prototype+jQuery不冲突,MooTools+jQuery也不冲突,但是一旦都合在一起及Prototype+MooTools+jQuery则Prototype与MooTools必定发生冲突。找了很多资料没有找到解决办法啊,现请教下各位高手看有没有什么办法可以解决这个问题,谢谢!

 

加载中
0
MUTEX
MUTEX
天哪,这是多么混乱的项目管理啊。 可以预见,这个程序就快没法维护了。
赵开锦
赵开锦
最关键的是领导从来只关心界面好不好看,才不会关心项目管理怎么样呢,只问美工早上就出来页面了,为什么晚上程序员还不能上线!
赵开锦
赵开锦
没办法,项目先后做过N次改版,总体而言界面都是以美工的为准的,然后美工的特效都是东抄一点,西抄一点,然后拼凑的页面,自然经常出现这种情况,程序员就是给美工打下手的吗,习惯就好
0
赵开锦
赵开锦

终于用一个变通的方法解决了!

我翻了下Prototype和MooTools的类创建方法,发现基本雷同,而且MooTools的功能好像还要多些,于是直接删除了Prototype,然后将QIndex这个Prototype的插件用MooTools的插件方式重写了一遍,目前引用的js如下

        <script type="text/javascript" src="js/mootools.js"></script>
        <script type="text/javascript" src="js/home.js"></script>
        <script type="text/javascript" src="js/jxt/QIndex.js"></script>
        <script type="text/javascript" src="js/jquery.js"></script>
        <script type="text/javascript">
            jQuery.noConflict();
        </script>

星星爷
星星爷
哈哈,你快啊 :)
0
星星爷
星星爷
现翻了一下 居然没找到那个文档!  貌似jquery有个专门解决conflict的方法....
赵开锦
赵开锦
<script type="text/javascript"> jQuery.noConflict(); </script> 这个就是jQuery解决与其他框架冲突的方法
0
Liberxue
Liberxue
我也想知道  mootools和jq怎么解决并存
韩梦芫
韩梦芫
http://www.youcan.cc/index.php/archives/127 有人给出了三种方法可以解决 不过我感觉原理都是一样的 第三种方法大赞呀
0
Liberxue
Liberxue

引用来自“cvsyun便利云”的答案

我也想知道  mootools和jq怎么解决并存
.................早就解决了  当时好多人喷我来着
0
吴振宁
吴振宁

有必要搞得这么麻烦么,其中用一种就够了。

置于美工麻,炒了算了。

还有一种方法

(function($J,$M){

})(jQuery,mootools);

$J是jquery的对象,$M是mootools。

总之不用$就好了。

或直接用jQuery()。

0
dragon2015
dragon2015
现在的领导就是考虑技术支持和历史遗留问题,就太页面效果,太龌龊了!
返回顶部
顶部