Конфликты библиотеки jQuery

#jquery #jquery-plugins #lightbox

#jquery #jquery-плагины #лайтбокс

Вопрос:

Я не уверен, как включить две библиотеки jquery, которые мне нужны для одновременной работы с slidedeck и lightbox. Если я удалю «jquery.js «, slidedeck будет работать, но лайтбокс — нет. Если я удалю «jquery-1.3.2.min.js «, с другой стороны, лайтбокс будет работать, а sliddeck — нет.

Попытка запустить их оба одновременно приводит к сбою slidedeck / lightbox и генерирует следующий отчет в Google Chrome:

[Сообщение об ошибке в Chrome]

Кто-нибудь может помочь мне разобраться, как запустить оба этих плагина jquery одновременно?

Спасибо, Ник

Ответ №1:

Замените оба на это:

 <script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js" type="text/javascript"></script>
 

jQuery обновлен до версии 1.6.4, человек, должен идти в ногу 🙂

Комментарии:

1. На самом деле не отвечает на вопрос, но я согласен. Он должен просто обновить все 3 (jQuery, lightbox и sidedeck) до последней версии и не включать 2 версии jQuery.

2. @Alien: Спасибо. Сейчас это работает, но есть какие-либо подсказки относительно того, почему лайтбокс теперь движется намного медленнее? Чтобы уточнить, перемещение между изображениями при нажатии «next» или «previous» происходит намного медленнее после внесения этого изменения.

3. Нет, мне нужно было бы просмотреть ваш сайт и просмотреть код до / после. Обновлен ли ваш код лайтбокса?

Ответ №2:

Если я удалю «jquery.js «, slidedeck будет работать, но лайтбокс — нет.

При удалении jquery.js Лайтбокс не работает, потому что вы включали его РАНЬШЕ jQuery-1.3.2.min.js . Другими словами, с удалением этого конкретного экземпляра jQuery вы включаете Lightbox вообще без jQuery.

jQuery должен быть включен перед любыми / всеми плагинами.

Если я удалю «jquery-1.3.2.min.js «, с другой стороны, лайтбокс будет работать, а sliddeck — нет.

Вероятно, это потому jquery.js , что устарело.

Просто включите последнюю версию jQuery ОДИН РАЗ, и перед включением обоих плагинов.

Ответ №3:

используйте noConflict

 <script src='jquery-1.3.2.js'></script>
<script>
var jq132 = jQuery.noConflict();
</script>
<script src='jquery-1.4.2.js'></script>
<script>
var jq142 = jQuery.noConflict();
</script>
 

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

 jq132("element").sliddeck(); // i don't know about sliddeck so don't know how to use 
 

и

 jq142("element").lightbox();
 

как указано в @Sparky672, вы должны включить jquery , прежде чем включать какие-либо другие xyz.js

Комментарии:

1. Поскольку плагин, вероятно, был определен как jQuery.fn.myPlugin = function() { ... } , он, вероятно, будет применен к последнему включенному экземпляру jQuery.

2. У вас есть точка после jq142 в вашем втором примере.

3. То, что noConflict позволит OP запускать две версии jQuery, не означает, что мы должны предлагать это как «решение».