How to avoid conflict between JQuery and Prototype

Sadi picture Sadi · Sep 9, 2009 · Viewed 16.1k times · Source

If a page has both JQuery and Prototype then I got conflict. There is a option to disable $ sign for JQuery so there is no conflict but, I have to use keyword JQuery instead of $.

I wonder if there is any option for Prototype to solve this conflict. Is there any way to use both libraries without compromising their benefit or short keyword?

As far as I know, it is not a good idea to use multiple JS library for same page; but it may be helpful for sometimes.

Answer

tvanfosson picture tvanfosson · Sep 9, 2009

Use the noConflict method for jQuery and assign it to a new (short) variable. Use the new variable wherever you would have used the $ for jQuery.

var $j = jQuery.noConflict();

$j(function() {
    $j('#selector').each( .... );
});

or, if you don't need to mix Prototype/jQuery you can wrap all of your jQuery code in an anonymous function.

(function($) {
    // $ sign here is a parameter, which is set to jQuery 

    $(function() {
        $('#selector').each( .... );
    });
})(jQuery);