Проект, над которым я работаю, требует использования jQuery на веб-страницах клиентов. Клиенты вставят кусок кода, который мы предоставим, который включает несколько <script> элементы, которые создают виджет в <script> — создан <iframe>. Помните, что <script> Проблема в том, что у некоторых клиентов уже может быть установлена ​​более старая версия jQuery. Хотя это может сработать, если, по крайней мере, довольно В недавней версии наш код опирается на некоторые недавно представленные функциональные возможности в библиотеке jQuery, поэтому неизбежны случаи, когда клиентская версия jQuery слишком устарела. Мы не можем требовать от них обновления до последней версии jQuery. { *} обработчик для двух операторов (в новой функции или в блоке в

с 0 timeou t и вызов

по-другому в отношении пользовательских настроек браузера.

У меня была идея загрузить jQuery в <iframe> в домене клиента, который также включает в себя <script>, что может показаться возможным, но я надеюсь, что есть более элегантный способ сделать это (не говоря уже о производительности и сложности штрафов o f extra <iframe> s).

Событие: выполнить вторую строку в обработчике (вызов setTimeout). Очередь после: http://blog.nemikor.com/2009/10/03/using-multiple-versions-of- jquery /

<!-- load jQuery 1.1.3 -->
<script type="text/javascript" src="http://example.com/jquery-1.1.3.js"></script>
<script type="text/javascript">
var jQuery_1_1_3 = $.noConflict(true);
</script>

<!-- load jQuery 1.3.2 -->
<script type="text/javascript" src="http://example.com/jquery-1.3.2.js"></script>
<script type="text/javascript">
var jQuery_1_3_2 = $.noConflict(true);
</script>

Тогда вместо $('#selector').function(); Посмотрев на это и попробовав, я обнаружил, что на самом деле он не позволяет одновременно запускать более одного экземпляра jquery. После поисков вокруг я обнаружил, что это просто помогло, и кода было намного меньше. jQuery_1_3_2('#selector').function(); или jQuery_1_1_3('#selector').function(); Глядя на вывод

перерисовать Status DIV со значением «Calculation»

    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"></script>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js" type="text/javascript"></script>
    <script>var $j = jQuery.noConflict(true);</script>
    <script>
      $(document).ready(function(){
       console.log($().jquery); // This prints v1.4.2
       console.log($j().jquery); // This prints v1.9.1
      });
   </script>

Исходная страница загружает его «jquery.versionX.js» —

$j(function () {
        $j('.button-pro').on('click', function () {
            var el = $('#cnt'   this.id.replace('btn', ''));
            $j('#contentnew > div').not(el).animate({
                height: "toggle",
                opacity: "toggle"
            }, 100).hide();
            el.toggle();
        });
    });

И, наконец, если вы хотите достичь уровня сверхмассивной черной дыры, можно ожидать Promises : (то есть на той же странице, внутри которой был запущен JavaScript ). Это совсем другой вопрос, чем просто получение заголовков ответов для любого HTTP-запроса. Для начального запроса страницы заголовки не всегда доступны для javascript. Будут ли значения заголовка, которые вам нужны, будут надежными и достаточно согласованными, если вы снова запросите ту же страницу через AJAX, будет зависеть от вашего конкретного приложения. :

  • принадлежат versionX , $ и jQuery принадлежат версии Y плюс
  • имена вычисляемых свойств $ и jQuery принадлежат версии X,_$ и _jQuery принадлежат версии Y плюс
  • my_jQuery = jQuery.noConflict(true); — теперь $ и jQuery принадлежат versionX, _$ и _jQuery, вероятно, имеют значение null и my_jQuery с использованием фильтра:

…так далее.

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js" type="text/javascript"></script>
<script>
    var $i = jQuery.noConflict();
    alert($i.fn.jquery);
</script> 

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script>
    var $j = jQuery.noConflict();
    alert($j.fn.jquery);
</script> 

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script>
    var $k = jQuery.noConflict();
    alert($k.fn.jquery);
</script> 

Это также причина, по которой в таких средах, как | источника

Можно загрузить вторую версию jQuery, использовать ее и затем восстановить в исходную или сохранить вторую версию, если jQuery не был загружен ранее. Вот пример:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script>
<script type="text/javascript">
    var jQueryTemp = jQuery.noConflict(true);
    var jQueryOriginal = jQuery || jQueryTemp;
    if (window.jQuery){
        console.log('Original jQuery: ', jQuery.fn.jquery);
        console.log('Second jQuery: ', jQueryTemp.fn.jquery);
    }
    window.jQuery = window.$ = jQueryTemp;
</script>
<script type="text/javascript">
    console.log('Script using second: ', jQuery.fn.jquery);
</script>
<script type="text/javascript">
    // Restore original jQuery:
    window.jQuery = window.$ = jQueryOriginal;
    console.log('Script using original or the only version: ', jQuery.fn.jquery);
</script>

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

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js" type="text/javascript"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"></script>
<script>var $oldjQuery = $.noConflict(true);</script>

Посмотрите здесь, если вы сначала что-то напишите, используя $, после чего вы получите самую последнюю версию. Но если вам нужно что-то сделать со старым, то просто используйте $oldjQuery вывод будет: $ Глядя на вывод

IE документа document.selection.createRange не содержит ни начальных, ни конечных пустых строк { *} Однако, если вы хотите получить эффект, аналогичный нажатию на ссылку, вы должны перейти к:

$(function(){console.log($.fn.jquery)});
$oldjQuery (function(){console.log($oldjQuery.fn.jquery)})

Демо

Абсолютно, да, вы можете. Эта ссылка содержит подробную информацию о том, как этого добиться: https: // api .jquery.com / jquery.noconflict / Глядя на вывод