JQuery конфликтует с другими библиотеками - PullRequest
0 голосов
/ 13 марта 2012

У меня проблемы с реализацией jQuery, мой код JQuery были в этом конфликтуют. Я использую «latest.pack.js» с «source.js» и «prototype.js».

Выше были упомянуты все нерабочие причины jQuery, и конфликтующий код jQuery также не работает. Поэтому, пожалуйста, помогите мне как можно скорее

Ссылка: http://prototypejs.org/assets/2009/8/31/prototype.js

Ответы [ 6 ]

5 голосов
/ 13 марта 2012

Если это вообще возможно, сделайте себе одолжение и используйте только одну библиотеку JavaScript.

  • Загрузка двух полноценных библиотек может быть ресурсоемкой, особенно если они обе проходят по всему DOM для инициализации некоторых виджетов или чего-то еще.

  • Даже при noConflict возможны проблемы. Библиотеки используют различные внутренние методы для управления событиями и узлами DOM. Существует вероятность незначительных ошибок, которые noConflict не может предотвратить.

  • У вас будет два синтаксиса и философии для работы.

  • У вас будет две библиотеки для обновления и проверки зависимостей.

Выберите один и выберите свои плагины и виджеты на основе этой библиотеки.

3 голосов
/ 13 марта 2012

Во многих библиотеках используется символ $. Вам необходимо использовать метод noConflict () jQuery, например:

jQuery.noConflict();
// then your jQuery code ... for example
jQuery(document).ready(function($) {

, или вы можете использовать другую переменную дляJQuery:

var j = jQuery.noConflict();
j(document).ready(function($) {
2 голосов
/ 13 марта 2012

Самое простое решение - обернуть ваш код JQuery анонимной функцией:

(function($) {
   // your jQuery code
   $('#foo');
})(jQuery);

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

0 голосов
/ 13 марта 2012

Сайт документации jQuery имеет ссылку в главном меню "Использование jQuery с другими библиотеками" с подробными инструкциями по реализации noConflict ()

http://docs.jquery.com/Using_jQuery_with_Other_Libraries

0 голосов
/ 13 марта 2012

«Многие библиотеки JavaScript используют $ в качестве имени функции или переменной, так же как и jQuery.В случае jQuery $ - это псевдоним для jQuery, поэтому все функции доступны без использования $.Если нам нужно использовать другую библиотеку JavaScript наряду с jQuery, мы можем вернуть управление $ back другой библиотеке с помощью вызова $ .noConflict (): "

<script type="text/javascript" src="other_lib.js"></script>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$.noConflict();
jQuery(document).ready(function($) {
// Code that uses jQuery's $ can follow here.
});
 // Code that uses other library's $ can follow here.
</script>
0 голосов
/ 13 марта 2012

Вы должны использовать метод noConflict.
Еще один способ избавиться от конфликта - это отделить ваш код jquery от других библиотек:

(function($){
    //jquery code here  
    // $ represents jQuery in this block 
    alert($ === jQuery);     
})(jQuery); 
// outside the block, $ is set to the other libs that overwrite this variable
alert($ === jQuery);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...