Вверх

Блог
RSS лента

Устраняем конфликт между разными версиями jquery. А так же как сделать что бы YoxView работал с новой версией jquery

Vape Shop Эко Заправка

Сегодня при переносе сайта с ucoz столкнулся с проблемой. На сайте есть встроенная галерея, фотографии вставляются вручную, в определённый div, но на страницах сайта напоминают галерею. А проблема возникла в том что для галереи используется jquery плагин YoxView, но он работает только с версией jquery 1.4.2, и чуток выше, а на сайте используется версия jquery 1.7.1. Соответственно если подключить только старую библиотеку, то не работает функционал сайта, а с новой не работает галерея. Вернее не правильно работает, фотографии открываются, но нет кнопок перелистывания, и панели пропадают сразу же после открытия фото и больше не появляются, а если перелистывать фото нажав кнопку слайда или использовать комбинацию клавиш CTRL+стрелка влево или в право, то перелистывание работает неадекватно.

Первое что сделал это пошел искать более новую версию YoxView, но оказалось что у меня и так последняя 2.1 версия. Похоже разработчик этого плагина отказался от развития своего детища, и не кто другой не адаптирует этот плагин под новые версии библиотеки jquery. Хотя может кто то и переделывал, но делиться не спешит.

Второй мой шаг это поиск альтернативного плагина, но тут мои поиски окончились ничем, ничего подобного к сожалению не нашел, везде банальный lightbox и ему подобные. Хоть на своем блоге я его и использую lightbox но в этом проекте, да и в других думаю использовать YoxView. При поиске плагина нашел много интересных, красивые движения, «превьюшки» и еще куча мелочей, но почти все эти плагины используют rel="", что мне очень не подходит. YoxView же просто указываешь класс дива в котором содержатся все фотографии которые нужно использовать.

По сути мой способ решить конфликт между разными версиями jquery не изобретениt велосипеда, многие о нем знают, но например использовали не совсем для моей задачи. Собственно речь идет про jQuery.noConflict(), который я думаю многие использовали как минимум при работе с jquery и mootools, здесь же конфликт возникает из-за того что обе библиотеки используют знак $. У меня же просто jquery только разные версии. При создании новых версий jquery, программисты убирают или переделывают какие то функции, соответственно старый плагин может и не работать с новой версией jquery.

Что бы старая версия не мешала новой, нужно сделать следующее, сначала подключаете новую версию jquery, затем старую, а после этого пишете такой код:

  1. jQuery.noConflict();    
  2. jQuery(document).ready(function(){
  3.          
  4.  jQuery(".yoxview").yoxview(
  5.  {
  6.  backgroundColor: '#000000',
  7.  backgroundOpacity: 0.8,
  8.  lang: 'ru',
  9.  });     
  10.  
  11. });

Еще вам нужно будет открыть файл yoxview-init.js и закомментировать или удалить такие строки:

  1. if (!jQueryIsLoaded)
  2.     LoadScript("http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js");

В коде я привел пример запуска выше упомянутого YoxView плагина, он вызывается jQuery(".yoxview").yoxview( …
Другими словами вместо знака $ мы используем селектор jQuery, соответственно, теперь YoxView будет брать со старой библиотеки все ей необходимые функции, параметры и т.д. не мешая другому функционалу сайта использовать новую версию jquery (в моем случае 1.7.1, но может быть любая).

Возможно код нужно будет вставить между подключениями версий jquery, но в моем случае прокатило и последовательное подключение, покамест проблем я не обнаружил. Если у вас возникнут проблемы то пишите в комментариях, попробуем вместе разобраться.

Ваша оценка: Пусто Средняя: 4.3 (14 votes)

Комментарии

Спасибо большое

Всю ночь просидел, пытался исправить, но ничего не получилось. В гугле первая ссылка и решение проблемы за две минуты. Спасибо большое!!!

Спасибо тебе огромное

Человек, спасибо тебе огромное, инфа не нова, но толкового объяснения ранее не нашёл.
Столкнулся с кофликтом nivo slider, который работает с jquery.1.4.3
и с turn.js, который работает на jquery.1.7.1 при помощи твоей статьи помирил их)) работают вместе!!

может поможете?

Здравствуйте, возможно вы сможете мне помочь?
Я не знаю как в полной мере написать здесь в комменте, все что хочу спросить, поэтому на своей странице написал всю суть.

Если не затруднит прочитайте:
http://www.gorbuhi.net/index/reshenie_problemy/0-153

Я уже все перепробовал, ничего не помогает, ни как не могу понять что сделать еще. :(

Конфликт из-за версий

Конфликт из-за версий библиотек. Весь свой код, а так же ссылку на джейквери поставьте после тега BODY, в 99% моих случаев помогало.

Главная | Портфолио | Услуги | Контакты | Блог