документ готов не работает, когда у меня 2 jquery библиотеки - PullRequest
1 голос
/ 23 января 2020

Я использовал плагин, который включает

jquery -1.12.4.min. js

в качестве одного из его ресурсов. Но в моем проекте я использую

jquery -3.4.1.min. js.

Чтобы у них не было конфликта, Я сделал это:

<script src="https://code.jquery.com/jquery-3.4.1.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>
<script>var $x = jQuery.noConflict();alert("Version: "+$x.fn.jquery);</script> 
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
<script>var $y = jQuery.noConflict();alert("Version: "+$y.fn.jquery);</script>

Даже если функция noConflict() работает - из-за того, что версия соответствующих jqueries может быть замечена по тревоге, я получаю ошибку, указывающую на $(document).ready(function(){ , Я думаю, мне нужно указать, какую версию я буду использовать? Если да, то как? Я не могу найти синтаксис, чтобы сделать это. Пожалуйста, помогите ...

Ответы [ 3 ]

2 голосов
/ 23 января 2020

Прежде всего, лучше заменить $.noConflict() на $.noConflict(true), чтобы указать, что вы хотите, чтобы все экземпляры jQuery были удалены из конфликтующего имени.

Все это позволяет использовать $y и $x для обозначения jQuery с точной версией.

Так что вместо $(document).ready(function(){

вы бы сделали $y(document).ready(function(){ или $x(document).ready(function(){

0 голосов
/ 23 января 2020

Спасибо за ваши усилия. Я выяснил, как сохранить $ на прежних кодах, которые я написал. Я сделал следующее:

<script src="https://code.jquery.com/jquery-3.4.1.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>
<script>var $ = jQuery.noConflict();alert("Version: "+$x.fn.jquery);</script> 
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
<script>var $y = jQuery.noConflict();alert("Version: "+$y.fn.jquery);</script>

Поскольку я использовал $ в качестве контейнера для версии jquery, которую я использовал для своего проекта, мне не нужно менять коды, начинающиеся с $ на моем оригинальные коды.

Но чтобы использовать более старую версию jquery, которая использовалась плагином, который я интегрировал в свой проект, я должен использовать $ y (ei $ y (document) .ready (function ()). {}) и $ y ('# field1id'). val ();).

Мой проект уже работает. Спасибо за вклад.

0 голосов
/ 23 января 2020

Вы правильно использовали функцию noConflict, но вы не можете использовать '$' в имени переменной, так как вызов функции noConflict выпустил переменную '$' для использования другими javascript средами.

для изменения имен переменных x x y и попробуйте.

Также вы не можете использовать $(document).ready(function(){, поскольку вы уже изменили псевдоним переменной jquery $ на x и y в вашем случае.

<html>
<head>
<script src="https://code.jquery.com/jquery-3.4.1.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>
<script>var x = jQuery.noConflict();</script> 
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
<script>var y = jQuery.noConflict();</script>
<script type="text/javascript">
x(document).ready(function(){

alert('ready from :' + x.fn.jquery);
});

y(document).ready(function(){

alert('ready from :' + y.fn.jquery);
});
</script>
</head>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...