Если вы включаете 2 версии jQuery на страницу, как вы ограничиваете плагин только одним из них? - PullRequest
3 голосов
/ 22 февраля 2011

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

Я знаю из Jquery docs , что что-то подобное должно работать.

var dom = {};
dom.query = jQuery.noConflict(true);

Проблема в том, что я также использую некоторые плагины jquery, а именно fancybox и mousewheel . Итак, как я могу убедиться, что моя версия jQuery единственная, которая может использовать эти плагины. Я не хочу, чтобы случился конфликт, если один из наших клиентов использует одни и те же на своих страницах, но разные версии.

Единственный определенный способ, которым я могу сейчас придумать, - это изменить плагины, чтобы они вызывали только dom.query

Ответы [ 2 ]

3 голосов
/ 22 февраля 2011

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

<script type="text/javascript">
    (function($){
       var theirs_jquery = $;
    })(jQuery);
</script>

Затем добавить сценарий версии jQuery, включающий тег

<script src="link/to/my/jquery.js"></script>
 <!-- add your plugins -->
<script src="link/to/my/jquery/plugins/plugin1.js"></script>
<script src="link/to/my/jquery/plugins/plugin2.js"></script>

, затем добавьте еще один блок скрипта с помощью следующей строки

<script type="text/javascript">
(function(){
    var $$ = jQuery; // this is your shortcut
    var $ = theirs_jquery; // put back their version
})(jQuery);
</script>

, после чего вы можете получить доступ к своей версии jquery с помощью $$ shortcut

0 голосов
/ 22 февраля 2011

Вы можете использовать

(function($) {        

})(dom);

, чтобы обернуть ваши звонки.

Это отображает dom на $ только для кода в замене любого внешнего определения $.

Но яЯ не уверен, что это работает с 2 различными jQuery, возможно, jQuery не может сосуществовать с другими версиями jQuery.

...