Прототип / Mootools конфликтный вопрос - PullRequest
5 голосов
/ 12 ноября 2009

Итак, у меня есть страница, которая использует скрипты Prototype и Mootools AJAX.

Существует гораздо больше Mootools, чем в Prototype, поэтому мне интересно, есть ли в Prototype функция, похожая на jQuery $j = jQuery.noConflict();, которую я могу использовать для переопределения псевдонима $ для Prototype?

Спасибо!

Ответы [ 2 ]

8 голосов
/ 12 ноября 2009

Самая новая версия MooTools имеет режим без конфликтов. К сожалению, Prototype этого не делает, а это означает, что $ придется привязать к Prototype.

Чтобы включить безопасный режим Dollar, обновите свою версию MooTools и убедитесь, что вы включили MooTools после Prototype.

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

3 голосов
/ 12 ноября 2009

У меня действительно простое решение:

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