2015-10-28 2 views
0

У меня загружено несколько загружаемых jquery-библиотек (возможно, это изменение, размещенная платформа ecom с ограниченным доступом к определенным вещам), поэтому мне нужно noconflict их. текущий код:jQuery noconflict и несколько библиотек

<script type="text/javascript"> 
    $(document).ready(function() { 
     $('nav#menu').mmenu({ 
     slidingSubmenus: false 
     }); 
    }); 
</script> 

хотел бы, чтобы использовать переменную дифф как:

<script type="text/javascript"> 
var jQuery_1_11_1 = jQuery.noConflict(true); 
</script> 

так что-то вроде:

<script type="text/javascript"> 
    jQuery_1_11_1(document).ready(function() { 
     jQuery_1_11_1('nav#menu').mmenu({ 
     slidingSubmenus: false 
    }); 
    }); 
</script> 

, но, не имея каких-либо удачи ... спасибо заранее за любую помощь!

+0

И в чем проблема? Любые ошибки и т. Д.? – vitozev

ответ

1

Я не верю .noConflict() является то, что вы после того, как здесь, как все это будет сделать, это удалить JQuery из глобальной переменной $ имен.

Проблема, с которой вы сталкиваетесь, заключается в том, что вы хотите, чтобы несколько версий jQuery сосуществовали на одной странице.

Ваш общий подход к назначению переменной правильный. Порядок загрузки скриптов важен. Если ваша версия 1.11.1 не должна конфликтовать с более старой версией, скажем 1.7.2, вам необходимо убедиться, что вы сначала загружаете свою версию, назначаете переменную, а затем загружаете версию, которую хотите назначить глобальному $ последнему

<script type="text/javascript" src="jquery.1.11.1.js"></script> 
<script type="text/javascript"> 
    var $jq111 = jQuery; 
    // here we have set $jq111 to the current jQuery object which is 1.11.1 
    // at this point $ and jQuery are also 1.11.1 
</script> 

//IMPORTANT: now you will load any plugins for 1.11.1 these are and should only be accessable with the 1.11.1 library but if the plugin uses the global $ you may have problems more on that later 
<script type="text/javascript" src="menu.js"></script> 

<script type="text/javascript" src="jquery.1.7.2.js"></script> 
<script> 
    // at this point $ and jQuery are 1.7.2 
    // $jq111 should be 1.11.1 

    // to do something with 1.11.1 
    $jq111('nav#menu')... 

    // The menu plugin is loaded in the context of 1.11.1 
    // To ensure subcalls to the global $ work we need to create a block 
    (function($, undefined) { 
    // $ in this scope is pointing to $jq111 
    $('nav#menu').menu(...) 
    }($jq111)); 
</script> 
0

Какие ошибки вы получаете? Вы пробовали это:

<script type="text/javascript"> 
    jQuery_1_11_1(function($) { 
     $('nav#menu').mmenu({ 
      slidingSubmenus: false 
     }); 
    }); 
</script>