Jquery гармошка и дипбокс - PullRequest
1 голос
/ 13 мая 2009

У меня проблема с использованием Thickbox и аккордеона на одной странице, т.е. ни одна из них не работает. Я проверил, что они оба используют последнюю версию jquery. Ниже приведены мои включает. Другие файлы jscript не включены. Я использую это в шаблоне WordPress, если это может вызвать проблему.

<script type="text/javascript" src="<?php bloginfo('url'); ?>/wp-content/themes/foxintouch/javascript/jquery-1.3.2.min.js"></script>
<script type="text/javascript" src="<?php bloginfo('url'); ?>/wp-content/themes/foxintouch/javascript/jquery.accordion-1.2.2.js"></script>
<script type="text/javascript" src="<?php bloginfo('url'); ?>/wp-content/themes/foxintouch/javascript/jquery.accordion-1.2.2.source.js"></script>

<!-- thickbox -->

<script type="text/javascript" src="<?php bloginfo('url'); ?>/wp-content/themes/foxintouch/javascript/thickbox/thickbox.js"></script>
<link rel="stylesheet" href="<?php bloginfo('url'); ?>/wp-content/themes/foxintouch/javascript/thickbox/thickbox.css" type="text/css" media="screen" />

Вот призыв к аккордеону:

$(document).ready(function () {
 $('#sidebar ul').accordion();
 });

URL моего сайта: http://clients.bionic -comms.co.uk / fox / foxintouch-wp / issue / 13 / wesco-new-range / Любая помощь приветствуется. Спасибо

Ответы [ 2 ]

4 голосов
/ 13 мая 2009

Ваш код содержит ссылки на две версии библиотеки jquery. Первый (jquery-1.3.2.min.js) был расширен с помощью плагина аккордеона, но затем он был перезаписан второй библиотекой (jquery.js).

Это нарушило ваш код $('#sidebar ul').accordion();, потому что вторая библиотека jquery не содержала определения для функции accordion (только первая библиотека jquery была расширена с помощью плагина аккордеона).

Как только вы удалили вторую библиотеку jquery, Thickbox перестал работать, потому что Thickbox 3.1 не поддерживает jQuery 1.3+, но это можно легко исправить, изменив одну строку в Thickbox.js из:

TB_TempArray = $("a[@rel="+imageGroup+"]").get();

до

TB_TempArray = $("a[rel="+imageGroup+"]").get();
1 голос
/ 13 мая 2009

Я не уверен, почему вы используете функцию noConflict на своем сайте - это предназначено для отключения ярлыка $ в jQuery, чтобы его можно было использовать с конфликтующими библиотеками, такими как Prototype. Поскольку ваш сайт использует только код на основе jQuery, вам это не нужно.

Отключение ярлыка $ приводит к фатальной ошибке в коде для Thickbox, который, в свою очередь, приводит к сбою JS для всей страницы.

Попробуйте избавиться от кода noConflict и просто напрямую вызвать функцию accordian, например:

 $(document).ready(function () {
     $('#sidebar ul').accordion();
 });

Кроме того, вы не должны включать jquery.accordion-1.2.2.js и jquery.accordion-1.2.2.source.js, просто используйте сжатую версию jquery.accordion-1.2.2.js .

...