Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Конфликт jQuery c Prototype Framework (https://javascript.ru/forum/jquery/24850-konflikt-jquery-c-prototype-framework.html)

Greider 16.01.2012 19:13

Конфликт jQuery c Prototype Framework
 
Стоит у меня на сайте древовидное меню jquery.treeview, все работает:
Вот так оно подключается:
<script type="text/javascript" src="jquery.min.js"></script>
	<script type="text/javascript" src="lib/jquery.cookie.js"></script>
	<script type="text/javascript" src="jquery.treeview.js"></script>
	<script type="text/javascript" src="demo.js"></script>

Решил поставить скрипт для красивого показа картинок - известный Litebox. Читаю описание, дописываю значит строчки:
<script type="text/javascript" src="js/prototype.js"></script>
<script type="text/javascript" src="js/scriptaculous.js?load=effects,builder"></script>
<script type="text/javascript" src="js/lightbox.js"></script>


Лайтбокс при этом работает нормально, а вот древовидное меню перестает работать (полностью раскрывается), а файрфокс выдает ошибку:
Ошибка: $("#navigation") is null Источник: demo.js Строка: 4
В этом demo.js всего лишь одна функция, которая собсна и запускает меню:
$(document).ready(function(){
	// first example
	$("#navigation").treeview({
		collapsed: true,
		animated:"normal",
		unique: true,
		persist: "location"
	});
	// second example
	$("#browser").treeview({
		animated:"normal",
		persist: "cookie"
	});
});



Если подключаю Лайтбокс ПЕРЕД древовидным меню - то меню работает, а вот Лайтбокс нет! Браузер пишет следующее:
Ошибка: element.dispatchEvent is not a function Источник: /js/prototype.js Строка: 5733

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

DjDiablo 16.01.2012 20:00

На фига вам вообще прототайп то понадобился, неужто лайт бокса на jquery не нашли ?

И прототайп и jquery используют функцию $() отсюда и проблема
возможный вариант решения
Используйте к примеру
jQuery.noConflict();
и когда вам нужен jQuery обращайтесь не $ , а $jQuery в том числе и в demo.js и в плагинах jquery.

Пример продвинутого (противоконфликтного :) ) demo.js
jQuery(function($) { 
	$("#navigation").treeview({
		collapsed: true,
		animated:"normal",
		unique: true,
		persist: "location"
	});
	// second example
	$("#browser").treeview({
		animated:"normal",
		persist: "cookie"
	});
});

can3p 16.01.2012 21:44

http://fancybox.net/

Greider 16.01.2012 22:19

Цитата:

Сообщение от DjDiablo (Сообщение 150953)
На фига вам вообще прототайп то понадобился, неужто лайт бокса на jquery не нашли ?

Да как-то в голову не пришло поискать...
Цитата:

Сообщение от DjDiablo (Сообщение 150953)
и когда вам нужен jQuery обращайтесь не $ , а $jQuery в том числе и в demo.js и в плагинах jquery.

Спасибо за совет!
Цитата:

Сообщение от can3p (Сообщение 150961)

Спасибо, тоже вариант )


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