views:

2276

answers:

3

So I have a page that uses both Prototype and Mootools AJAX scripts.

There is much more Mootools that Prototype, so I'm wondering if Prototype has a function similar to jQuery's $j = jQuery.noConflict(); that I can use to redefine the $ alias for Prototype?

Thanks!

+2  A: 

I have a really simple solution:

<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>
Ghommey
+4  A: 

The newest version of MooTools has a no conflict mode. Unfortunately, Prototype does not, which means that the $ will have to be bound to Prototype.

To enable the Dollar Safe Mode, upgrade your version of MooTools and make sure you include MooTools after Prototype.

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

After doing so, $ will be bound to Prototype. In MooTools scripts, replace all $ references to 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);
    }
});

or you can use a closure:

(function(){

    var $ = document.id;

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

})();

More information about the Dollar Safe Mode is available in MooTools' blog:

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

Andrew Moore
Thanks, I was hoping Prototype had something similar to this since it's by far the smaller implementation, but naturally, one is never so lucky.
Marty
While I do agree that you do not want a 200 kb (compressed) library, MooTools' 67 kb compressed is very respectable. Don't base your choice on size, but on functionality. MooTools does everything Prototype does and I would recommend to drop Prototype. Also, use the website to do a custom build of MooTools and remove anything you do not need.
Andrew Moore
A: 

same problem. both solutions are not working

Faisal