Задать вопрос
Chefranov
@Chefranov
Новичок

Как подключить две версии jQuery?

Имеется конструктор сайта, на котором используется jQuery 1.10.2 и его нельзя отключить или заменить на новый (нет доступа к движку), он автоматом подключается на все страницы. На сайте у меня есть карусели которые используют версию jQuery по-новее (3.2.1). Прописываю новую версию jQuery в head и у меня получается конфликт и карусель не работает.

Дополнительно:
Ещё вместе с старым JQ подключаются скрипты (которые тоже не отредактировать) и должны работать как с обычным JQ завязанными на $('.some_class')... ?

Можно ли как-то подключив более новую версию не создавая конфликт для старой версии? Напомню, что доступа к старой версии JQuery у меня нет и её никак поменять не могу. Первой к странице подключается всегда старая версия.
  • Вопрос задан
  • 5365 просмотров
Подписаться 2 Средний 3 комментария
Решения вопроса 1
freislot
@freislot
Frontend-разработчик
Можно вот так. Менее запутанно но смысл тот же

<!-- load jQuery 1.10.2 -->
<script type="text/javascript" src="http://example.com/jquery-1.10.2.js"></script>
<script type="text/javascript">
var jQuery_1_10_2 = $.noConflict(true);
</script>

<!-- load jQuery 3.2.1 -->
<script type="text/javascript" src="http://example.com/jquery-3.2.1.js"></script>
<script type="text/javascript">
var jQuery_3_2_1 = $.noConflict(true);
</script>


и в коде где вы вызываете свои плагины пишете так вместо $('#selector').function()
jQuery_3_2_1('#selector').function();
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
$.noConflict();

Это нашел по запросу:

Всё верно, всё jQuery.noConflict() решает. У меня получилось, нужно его использовать вместе с анонимным объявлением функций javascript.
На сайте используется jQuery времён палеолита (1.3.2), я совмещал с 1.8.2.
В блоке head подключается старая jQuery.
<script type="text/javascript" src="jquery-1.3.2.min.js"></script>

Далее в body подключаю версию поновее:
<script type="text/javascript" src="<?= JS_HTTP?>jquery-1.8.2.min.js"></script>
<script type="text/javascript">var jQuery_1_8_2 = jQuery.noConflict();</script>


И далее обе версии доступны таким образом:
копировать в буфер
показать чистый исходник в новом окне
Скрыть/показать номера строк
печать кода с сохранением подсветки
1
	(function($) {
2
	//здесь располагается тот код, который работает со старой версией
3
	})(jQuery);
4
	(function($) {
5
	//а вот здесь уже версия новая.
6
	})(jQuery_1_8_2);


А по делу, не стал бы я подключать 2 версии.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы