Конфликт jQuery

Y
На сайте с 14.05.2009
Offline
94
4134

Пытаюсь к сайту прикрутить два скрипта

jquery-1.4.2.min.js и mootools.js

Не хотят вместе работать. Работает только тот скрипт, который объявлен последним.

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

тут пишут что можно отдать контроль над этой переменной др. скрипту с помощью метода $.noConflict()

Если я правильно понял, надо просто сделать так:


<script language="javascript" type="text/javascript" src="scripts/mootools-1.2.4-core.js"></script>
<script language="javascript" type="text/javascript" src="scripts/mootools-1.2.4.4-more.js"></script>
<script language="javascript" type="text/javascript" src="scripts/scripts.js"></script>
<script language="javascript" type="text/javascript" src="scripts/jquery-latest.min.js"></script>
<script language="javascript" type="text/javascript" src="scripts/rotation_type.js"></script>
<script language="javascript" type="text/javascript" src="scripts/rotor.js"></script>
<script type="text/javascript">$.noConflict();</script>

после этого, jQuery перестанет использовать $. Но по прежнему ничего не работает, только теперь первый объявленный скрипт работает, а последний нет. Может я что-то не так понял?

[Удален]
#1
Y
На сайте с 14.05.2009
Offline
94
#2

я это читал. ссылка которую я дал о том же но на русском. не работает.

gormarket
На сайте с 29.12.2010
Offline
47
#3

То что Вы сделали, это только освободили переменную $ для использования скриптом mootools.

А нужно еще и в коде вашего сайта заменить все обращения к jQuery через "$(..." на "jQuery(..."

В статье, ссылку на которую Вы дали, ведь написано:


// Используем jQuery
jQuery("div p").hide();
//Используем $() другой библиотеки
$("content").style.display = 'none';

А у Вас на сайте обращение и к той и к другой библиотекам осталось через $

jQuery перестал использовать $, а Вы продолжаете обращаться к нему через эту переменную.

Товары и цены в магазинах Вашего города: Городской рынок (http://gormarket.ru/)
n0name
На сайте с 22.12.2006
Offline
54
#4

<script language="javascript" type="text/javascript" src="scripts/mootools-1.2.4-core.js"></script>

<script language="javascript" type="text/javascript" src="scripts/mootools-1.2.4.4-more.js"></script>
<script language="javascript" type="text/javascript" src="scripts/scripts.js"></script>
<script language="javascript" type="text/javascript" src="scripts/jquery-latest.min.js"></script>
<script type="text/javascript">$.noConflict();</script>
<script language="javascript" type="text/javascript" src="scripts/rotation_type.js"></script>
<script language="javascript" type="text/javascript" src="scripts/rotor.js"></script>

Должно помочь. Только скрипты, которые используют jQuery, больше не должны использовать $.

Сервис сравнения цена на VPS (http://vpska.com/)
Y
На сайте с 14.05.2009
Offline
94
#5
n0name:

Должно помочь.

так я пробовал - разницы никакой.

n0name:
Только скрипты, которые используют jQuery, больше не должны использовать $.

yozuul добавил 28.02.2011 в 00:37

gormarket:
То что Вы сделали, это только освободили переменную $ для использования скриптом mootools.
А нужно еще и в коде вашего сайта заменить все обращения к jQuery через "$(..." на "jQuery(..."

аа. понял. сейчас попробую.

yozuul добавил 28.02.2011 в 01:19

всем спасибо за помощь.

Y
На сайте с 14.05.2009
Offline
94
#6

Дубль два. Надо прикрутить еще третий скрипт использующий jQuery. То что было.

<script language="javascript" type="text/javascript" src="scripts/mootools-1.2.4-core.js"></script>

<script language="javascript" type="text/javascript" src="scripts/mootools-1.2.4.4-more.js"></script>
<script language="javascript" type="text/javascript" src="scripts/scripts.js"></script>

<script language="javascript" type="text/javascript" src="scripts/jquery-latest.min.js"></script>
<script language="javascript" type="text/javascript" src="scripts/rotation_type.js"></script>
<script language="javascript" type="text/javascript" src="scripts/rotor.js"></script>
<script type="text/javascript">$.noConflict();</script>

Первый скрипт scripts.js (красным), если я правильно понял использует библиотеки mootools

Два вторые rotation_type.js и rotor.js используют библиотеку jquery-latest.min.js

Я не стал делать через jQuery.noConflict();, а просто заменил в первом скрипте все перменные $ на перменнуые jquery и все заработало.

Теперь надо пдключить третий скрипт

<script type="text/javascript" src="java/contact.js"></script>

По понятным причинам, он не хочет работать - обращение в нем идет через $. Делаю так:

<script language="javascript" type="text/javascript" src="scripts/mootools-1.2.4-core.js"></script>

<script language="javascript" type="text/javascript" src="scripts/mootools-1.2.4.4-more.js"></script>
<script language="javascript" type="text/javascript" src="scripts/scripts.js"></script>

<script language="javascript" type="text/javascript" src="scripts/jquery-latest.min.js"></script>
<script language="javascript" type="text/javascript" src="scripts/rotation_type.js"></script>
<script language="javascript" type="text/javascript" src="scripts/rotor.js"></script>
<script type="text/javascript">$.noConflict();</script>

<script type="text/javascript" src="java/contact.js"></script>
<script language="javascript" type="text/javascript">var j = $.noConflict();</script>

и в contact.js меняю все $ на j, но ничего не работает. Что опять не так?

p.s. причем если ставлю это var j = $.noConflict(); то не работает второй и третий скрипт. вообще.

если без этого var j = $.noConflict(); и без замены переменных, то второй начинает работать, а трейтий только частично работает.

n0name
На сайте с 22.12.2006
Offline
54
#7
yozuul:
если я правильно понял использует библиотеки mootools

Такого не должно быть :)

Нужно сначала точно определить какой скрипт какие библиотеки использует и только тогда изменять сами скрипты.

Советую вам вообще уйти от сокращения $. В тех скриптах, которые используют jQuery, замените $ на jQuery, а в тех, которые Mootools, замените $ на document.id

Y
На сайте с 14.05.2009
Offline
94
#8

забил кароче на этот mootools сделал все через jQuery 😂

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий