Как избежать конфликта между JQuery и Prototype

Если на странице есть и JQuery, и Prototype, у меня возникает конфликт. Существует возможность отключить знак $ для JQuery, чтобы не возникало конфликта, но я должен использовать ключевое слово JQuery вместо $.

Интересно, есть ли у Prototype какой-либо вариант решения этого конфликта. Есть ли способ использовать обе библиотеки без ущерба для их преимущества или короткого ключевого слова?

Насколько я знаю, не рекомендуется использовать несколько библиотек JS для одной и той же страницы; но это может быть полезно для иногда.


person Sadi    schedule 09.09.2009    source источник
comment
убедитесь, что вы загружаете jQuery перед прототипом   -  person Alec Smart    schedule 09.09.2009
comment
Я думаю, что это должен быть один из самых задаваемых вопросов jQuery :)   -  person Russ Cam    schedule 10.09.2009


Ответы (1)


Используйте метод noConflict для jQuery и назначьте его новой (короткой) переменной. Используйте новую переменную везде, где бы вы использовали $ для jQuery.

var $j = jQuery.noConflict();

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

или, если вам не нужно смешивать Prototype/jQuery, вы можете обернуть весь свой код jQuery в анонимную функцию.

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

    $(function() {
        $('#selector').each( .... );
    });
})(jQuery);
person tvanfosson    schedule 09.09.2009
comment
Есть ли какой-то определенный порядок включения jQuery (первый, последний и т. д.) для любого из ваших примеров кода? - person Crescent Fresh; 09.09.2009
comment
Если вы используете noConflict, jQuery должен быть включен до того, как вы его вызовете (очевидно), как и другая библиотека, определяющая $. Подробнее см. на этой странице: docs.jquery.com/Using_jQuery_with_Other_Libraries - person tvanfosson; 09.09.2009
comment
@tvanfosson Я не знал, что переменная может быть назначена, хороший трюк :) Э-э ... Я знаю о втором методе, но он мне не нравится :( это легко меня сбивает с толку. Спасибо за ваше время :) - person Sadi; 09.09.2009