Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   2 разных версии jquery (https://javascript.ru/forum/events/28102-2-raznykh-versii-jquery.html)

agert 07.05.2012 17:41

2 разных версии jquery
 
на сайте уже используется более 50-ти скриптов. И все они используют jquery 1.3.2
Я подключил lightbox. Он использует jquery 1,7,2. Все нормально установилось, но после подключения jquery 1,7,2 некоторые из старых скриптов перестали работать. Как подключить jquery 1,7,2 только для lightbox. (чтобы на остальные вскрипты он не повлиял)

razerxxx 09.05.2012 01:48

Информация для гугления - jQuery.noConfilct

Gvozd 09.05.2012 03:07

razerxxx,
можете развернуто ответить как это поможет устранить конфликт между двумя версиями jQuery при использовании произвольных скриптов без необходимости их переработки?
Полагаю, что нет, и ответили вы не вникнув в вопрос.
agert,
наименее затратным в плане модификаций я вижу примерно такой способ:
<script src="jquery.1.7.2.js"></script>
<script>
var jquery_1_7_2 = jQuery;
</script>
<script src="jquery.1.3.2.js"></script>

все скрипты лайтбокса надо обернуть в такой код
(function(){
    var $ = jQuery = jquery_1_7_2 ;
    // тут код лайтбокса, что был в файле до нашего вмешательства.
})();

Тогда старые скрипты сохранят работоспособность, и скорее всего(зависит от кода лайтбокса) лайтбокс будет работать, и будет работать он с версией 1.7.2

А вообще, по-хорошему следует заменить скрипты использующие jQUery на более свежие аналоги, от которых не воняет мертвечиной.

EvgeniyRRU 10.10.2012 15:17

можете развернуто ответить как это поможет устранить конфликт между двумя версиями jQuery при использовании произвольных скриптов без необходимости их переработки?
Полагаю, что нет, и ответили вы не вникнув в вопрос.


Всё верно, всё 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>


И далее обе версии доступны таким образом:
(function($) {
//здесь располагается тот код, который работает со старой версией
})(jQuery);
(function($) {
//а вот здесь уже версия новая.
})(jQuery_1_8_2);

Mister-Fil 11.10.2012 23:43

я обожаю гугл, снова он мне помог найти ответ на мой вопрос, а людей хрен допросишься, все к нему отправляют :lol:

Nekromancer 12.10.2012 00:44

А давайте ещё и Мутулз подключим!

Gvozd 12.10.2012 09:56

EvgeniyRRU,
И в чем принципиальная магия jQuery.noConflict() ?
Вы просто взяли мой код, и переписали его:
1) поменяли местами подключение jQuery
2) вернули обратно старый в качестве основного при помощи jQuery.noConflict()

И в итоге вы все равно модифицировали скрипты, обернув(причем с ошибкой) их в замыкание, чтобы они могли работать с соответствующими jQuery

Так что в итоге вы не ответили на главную часть вопроса
Цитата:

Сообщение от EvgeniyRRU
без необходимости их переработки?


Your 14.10.2012 07:16

Подключаете, новый и правите старый скрипт.
Для выяснения изменений посетите сайт jquery.com.

А то, что вы делаете это полный бред.

EvgeniyRRU 19.10.2012 09:55

Gvozd,
согласен, это костыль. Но когда нет другого выхода, можно его и применить.


Часовой пояс GMT +3, время: 16:21.