2009-03-27 3 views
1

У меня есть меню аккордеона и сценарий lightwindow на моей веб-странице. Сценарий lightwindow не работает из-за скрипта аккордеона, потому что, если я удалю его, работает скрипт lightwindow. Должен быть конфликт, но что?Контекст Javascript на моей странице html

Вот раздел глава моей страницы:

<!-- lightwindow files --> 
<script type="text/javascript" src="lightwindow/javascript/prototype.js"></script> 
<script type="text/javascript" src="lightwindow/javascript/scriptaculous.js?load=effects"></script> 
<script type="text/javascript" src="lightwindow/javascript/lightwindow.js"></script> 
<link rel="stylesheet" href="lightwindow/css/lightwindow.css" type="text/css" media="screen" /> 


<!-- accordion scripts --> 
<script src="js/jquery-1.2.1.min.js" type="text/javascript"></script> 
<script src="js/menu.js" type="text/javascript"></script> 
<script src="js/jquery.cookie.js" type="text/javascript"></script> 
<link rel="stylesheet" type="text/css" href="css/accordion.css" /> 

Спасибо за ваше время.

Приветствия

tochiro

ответ

0

Вы можете иметь метод/функцию, определенную в обеих библиотеках с тем же именем.

Если не дублировать имя метода/функции, проверьте наличие повторяющихся имен глобальных переменных.

Я несколько раз сталкивался с конфликтами при попытке добавить методы к документу, который переписывал друг друга.

0

У вас почти наверняка есть конфликт между JQuery и Prototype. Оба они определяют $, например.

JQuery имеет режим совместимости, позволяющий избежать конфликтов.

3

Вам нужно будет использовать метод jQuery.noConflict, описанный в http://docs.jquery.com/Core/jQuery.noConflict.

Не определенно, если версия 1.2.1 будет иметь его.

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

Обновление: добавлен код ниже, чтобы помочь вам исправить ошибку. Если строка jQuery.noConflict() вызывает ошибку, возможно, вам придется попробовать более новую версию jQuery.

<script src="js/jquery-1.2.1.min.js" type="text/javascript"></script> 
<script type="text/javascript"> jQuery.noConflict() </script> 

<!-- lightwindow files --> 
<script type="text/javascript" src="lightwindow/javascript/prototype.js"></script> 
<script type="text/javascript" src="lightwindow/javascript/scriptaculous.js?load=effects"></script> 
<script type="text/javascript" src="lightwindow/javascript/lightwindow.js"></script> 
<link rel="stylesheet" href="lightwindow/css/lightwindow.css" type="text/css" media="screen" /> 


<!-- accordion scripts --> 
<script src="js/menu.js" type="text/javascript"></script> 
<script src="js/jquery.cookie.js" type="text/javascript"></script> 
<link rel="stylesheet" type="text/css" href="css/accordion.css" /> 

Также ПРИМЕЧАНИЕ вам может понадобиться поменять часть вашего кода от $ (...) в JQuery (...)

С док страницы JQuery:

где вы используется для $ («div p»), теперь вы должны выполнить jQuery («div p»).

+0

Я скорее новичок в Javascript, и хотя я читаю указанную вами страницу, я не мог понять ее достаточно, чтобы решить мою проблему. Я пытаюсь сначала поставить jquery, но это не изменило проблему. – 2009-03-27 18:46:05

+0

На странице это выглядит так же просто, как сначала положить материал jQuery, а затем добавить некоторый встроенный код чуть ниже его для jQuery.noConflict(); то дополнительные библиотеки не испортят его. –

+0

Я пробовал это. Lightwindow работает, но есть проблема с скриптом аккордеона: все его элементы открыты, а только один должен быть открыт, а остальные закрыты. – 2009-03-27 19:43:21

1
<script type="text/javascript"> jQuery.noConflict() </script> 

Просто хотел сказать, что это Лил трюк творит чудеса для меня спасибо. Если вы используете хроноформы, это, вероятно, ответ на ваши проблемы с javascript.

Нет больше «СОВЕРШЕННО, НО С ОШИБКАМИ НА СТРАНИЦЕ» Наконец.

Еще раз спасибо

1

При добавлении jQuery.noConflict(); - вам также нужно войти в скрипт jQuery и обменять все переменные $ на jQuery