использование нескольких версий jquery-ui

У нас есть сайты, использующие jQuery UI, и один из сайтов включает некоторые фрагменты с другого сайта. Эти части построены на Jquery UI Accordion, но я не могу загрузить обе версии пользовательского интерфейса. Одна из них — кастомная сборка 1.8.11, другая — полная версия (полная не загружается).

какие-либо предложения?


person Rune FS    schedule 15.06.2011    source источник
comment
Любые сообщения об ошибках? Вы пытаетесь загрузить две версии на один и тот же сайт? Или вы говорите, что у вас есть два сайта, каждый использует свою версию, и один не будет работать?   -  person Jeff Sheldon    schedule 15.06.2011


Ответы (3)


Пожалуйста, прочтите документацию по пользовательскому интерфейсу JQUERY. Вы не можете использовать две версии пользовательского интерфейса, не указав КОНТЕКСТ для каждой из них.

Это позволяет, например, использовать несколько пользовательских интерфейсов на одной странице.

Плохая новость заключается в том, что после создания файла вы не можете добавить контекст впоследствии.

Я не уверен, но я думаю, что в файлах javascript, связанных с пользовательским интерфейсом, есть ссылка, которая приведет вас на страницу сборки пользовательского интерфейса JQUERY, и там вы можете восстановить пользовательский интерфейс с контекстом.

person T9b    schedule 15.06.2011
comment
по крайней мере, он ближе всего к любому пришел :). На самом деле это не решает проблему загрузки одной и той же версии пользовательского интерфейса дважды, но проблема может быть той же. - person Rune FS; 04.07.2011
comment
[на] странице сборки пользовательского интерфейса jQuery ... вы можете регенерировать пользовательский интерфейс с контекстом. У вас есть ссылка на это? Страница сборки пользовательского интерфейса jQuery по адресу jqueryui.com/download, по-видимому, не упоминает ничего под названием "КОНТЕКСТ", и это похоже, нет элементов управления, чтобы добавить такую ​​​​вещь. - person fooquency; 01.03.2014
comment
Я считаю, что дать jQuery UI свой собственный контекст - это то, что Эдгер объясняет в своем ответе (stackoverflow.com/a/15836272/2598101) . По сути, вы временно сохраняете переменную jQuery в такой переменной, как var jQuery1 = window.jQuery;, затем загружаете скрипт (либо встроенный в HTML с тегом <script>, либо программно в JavaScript с последующим обратным вызовом onload), затем устанавливаете только что загруженный jQuery в другую переменную, например var jQuery2 = window.jQuery; а затем восстановить старый, например window.jQuery = jQuery1;. - person Joseph Shih; 25.05.2019

Разобрался с этим через час. Почему-то никто не объяснил это в Интернете.

Сначала вы вызываете версию jQuery, с которой не хотите конфликтовать:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
<script type="text/javascript">
  var $jnine = jQuery.noConflict();
</script>

В этом случае я назвал новый jQuery $jnine по номеру версии.

Теперь вам нужно отредактировать jquery-ui-1.10.0.custom.min.js. Это на самом деле очень просто. Откройте его в своем любимом текстовом редакторе, который поддерживает поиск и замену. Notepad++, на мой взгляд, самый лучший.

Теперь вы будете искать (jQuery) с учетом регистра и замените его на ($jnine) Затем сохраните файл где угодно и запустите его на своем сайте ПОСЛЕ запуска функции noConflict().

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
<script type="text/javascript">
  var $jnine = jQuery.noConflict();
</script>

<script src="js/jquery-ui-1.10.0.custom_jnine.min.js"></script>

Теперь вы можете вызывать все функции jQuery и jQuery ui с помощью $jnine

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

person Jack Cole    schedule 06.02.2013

Другой вариант — загрузить ваш пользовательский интерфейс в его собственный контекст.

<script language="javascript" type="text/javascript">
   var smartDonationsOldJQuery=jQuery;
   var smartDonationsOldCashSign=$;
</script>

<script language="javascript" type="text/javascript" src="http://rednao.com/wp-content/plugins/smartdonations/js/jquery-1.9.1.min.js"></script>
<script language="javascript" type="text/javascript" src="http://rednao.com/wp-content/plugins/smartdonations/js/jquery-ui-1.10.2.custom.js"></script>

<script language="javascript" type="text/javascript">
    var rnSDJQ=jQuery;
    window.jQuery =smartDonationsOldJQuery;
    window.$ = smartDonationsOldCashSign;
</script>

Хорошо то, что у вас будет собственная копия jquery/jquery-ui, изолированная от остального кода (это действительно хорошо, если вы создаете компоненты, такие как компоненты wordpress). снова загрузите jquery.

Дополнительная информация здесь (отказ от ответственности, я написал это): Использование нескольких версий jquery ui< /а>

person Edgar    schedule 05.04.2013