используя 2 разных релиза jquery на одной странице - PullRequest
1 голос
/ 19 апреля 2010

Я использую этот плагин jquery для контроллера карусели http://sorgalla.com/projects/jcarousel/, он основан на выпуске jquery 1.2.1

Мне также нужно иметь вкладки на странице, но при включении в страницу текущей версии jquery карусель перестает работать.

Есть ли способ заставить их обоих жить вместе на одной странице, или есть способ заставить вкладки работать в версии 1.2.1?

Я скорее не перестраиваю карусель на другом плагине, так как этот уже имеет скин и работает так, как нужно.

Я попытался использовать jQuery.noConflict, контроллер jcarousel все еще не работал.

Ответы [ 3 ]

1 голос
/ 19 апреля 2010

Есть тонн других плагинов карусели, которые вы можете использовать ( этот выглядит довольно хорошо). Есть ли какая-то причина, по которой вам нужно использовать именно эту? Если нет, я бы порекомендовал вам избавиться от головной боли и просто переключиться на другой плагин.

В противном случае jQuery.noConflict должно работать. Если нет, то опубликуйте код, который вы используете, чтобы мы могли сказать вам, что не так.

1 голос
/ 19 апреля 2010

К сожалению, вы захотите потратить время на то, чтобы: а) исправить старый плагин, чтобы он работал на новых версиях jQuery, или б) переключиться на карусель, которая работает с новыми версиями jQuery Включение двух версий jQuery на сайт - это плохая практика , и вы будете просить о неприятностях позже , но это не невозможно.

Вы можете сделать что-то вроде этого:

<script type="text/javascript" src="/js/jquery-1.2.1.js"></script>
<script type="text/javascript" src="/js/oldcarousel.js"></script>
<script type="text/javascript">jQuery12 = jQuery.noConflict();</script>
<script type="text/javascript" src="/js/jquery-1.4.2.js"></script>

Предполагая, что oldcarousel.js использует замыкание (это означает, что первая и последняя строки кода выглядят так):

(function($){
  // and that all plugin code in here references $ not jQuery
})(jQuery); 

Он должен быть в состоянии "зависнуть" на jQuery 1.2 после того, как 1.4 перезапишет его.

Может также сработать, чтобы изменить порядок включения: Вы можете сделать что-то вроде этого:

<script type="text/javascript" src="/js/jquery-1.4.2.js"></script>
<script type="text/javascript" src="/js/jquery-1.2.1.js"></script>
<script type="text/javascript" src="/js/oldcarousel.js"></script>
<script type="text/javascript">jQuery12 = jQuery.noConflict(true);</script>

При передаче true в .noConflict() должны восстановиться псевдонимы $ и jQuery из новой версии.

0 голосов
/ 19 апреля 2010

Этот документ на jQuery API может помочь вам: jQuery.noConflict .

Хорошего дня.

...