原型/ Mootools冲突问题

时间:2009-11-12 14:58:11

标签: jquery mootools prototypejs conflict

所以我有一个同时使用Prototype和Mootools AJAX脚本的页面。

还有更多Mootools Prototype,所以我想知道Prototype是否有类似于jQuery的$j = jQuery.noConflict();的功能,我可以用来重新定义Prototype的$别名?

谢谢!

2 个答案:

答案 0 :(得分:8)

最新版本的MooTools没有冲突模式。不幸的是,Prototype没有,这意味着$必须绑定到Prototype。

要启用美元安全模式,请升级您的MooTools版本,并确保在Prototype之后包含MooTools。

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

执行此操作后,$将绑定到Prototype。在MooTools脚本中,将所有$引用替换为document.id

// Before
var X = new Class({
    initialize: function(element){
        this.element = $(element);
    }
});


// After
var X = new Class({
    initialize: function(element){
        this.element = document.id(element);
    }
});

或者您可以使用闭包:

(function(){

    var $ = document.id;

    this.X = new Class({
        initialize: function(element){
            this.element = $(element);
        }
    });

})();

有关美元安全模式的更多信息,请访问MooTools的博客:

  

http://mootools.net/blog/2009/06/22/the-dollar-safe-mode/

答案 1 :(得分:3)

我有一个非常简单的解决方案:

<script src='mootools.js'></script>
<script>$moo = $; delete ($);</script>
<script src='prototype.js></script>



<script>

(function ($){


//here you can use $ of moo tools

})($moo);


//here you can use $ of prototype


</script>