Як подружити jQuery та MooTools?
Мета статті: добитися сумісного використання бібліотек jQuery та MooTools, щоб працювати з ними в одному проекті.
Як відомо, jQuery «огортається» в функцію $(), але цю ж функцію полюбляють використовувати й інші відомі JavaScript фреймворки, зокрема й MooTools. Про те цей факт не означає, що дані фреймворки не можуть працювати разом.
З боку jQuery «конфліктність» вирішується дуже просто.
Розробники jQuery передбачили цю ситуацію і при спільному використанні бібліотек рекомендують використовувати функцію noConflict(); одразу ж після підключення інших бібліотек:
<script type="text/javascript" src="js/mootools.js"></script>
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript">
// викликаємо цю функцію, щоб передати
// контроль над змінною $ MooTools,
// тобто забороняємо бібліотеці jQuery використання $:
jQuery.noConflict();
// використовуємо jQuery через jQuery(...)
jQuery("div p").hide();
// і далі для MooTools сміло використовуйте $(...)
$("div p").set('class', 'active');
</script>
Після виклику jQuery.noConflict(); знак долара буде звільнений для MooTools (чи іншої бібліотеки). Правда, тепер ви зможете здійснити доступ до jQuery або через змінну «jQuery», тобто замість знаку долара ($) використовуйте функцію jQuery:
jQuery("#myId"); // еквівалентно $("#myId");
Або ж «обгорнувши» jQuery код в анонімну функцію
(function ($) {
// всередині цього блоку
// $ відноситься до jQuery
})(jQuery);
Додатково є й інша можливість. Якщо ви хочете не втрачати вигоду від короткого імені або бажаєте вказати своє власне ім’я, наприклад, jq, $j, то можете прописати щось подібне до цього:
<script type="text/javascript">
var $j = jQuery.noConflict();
<script>
І далі всюди для jQuery коду використовується $j.
Джерело:
- Using jQuery with Other Libraries (англійською мовою).
- jQuery - JavaScript нового поколения (російською мовою).
Листопад 23, 2010 о 14:20
Дякую,шукав рішення,спасибі ще раз
Жовтень 19, 2011 о 13:23
Щиро дякую. З ранку намагався вирішити проблему. Лише тут знайшов (заодно ще й дещо зрозумів). Дякую