Ответ 1
См. jQuery.noConflict(). Могут ли другие библиотеки javascript на вашей странице использовать переменную $
?
$
- это просто переменная, которая используется для псевдонима jQuery
и является переменной, все может быть назначено ему.
Когда я пытаюсь использовать $("#div_id")
в $(document).ready
, он возвращает NULL, но когда я использую jQuery("#div_id")
, он возвращает фактический объект!
Почему это происходит?
ОБНОВЛЕНИЕ: Я попробовал метод noConflict без получения подсказок.
jQuery.noConflict()
function (a,b){return new c.fn.init(a,b)}
$.noConflict();
TypeError: Object function ()
{
return document.getElementById.apply(document, arguments)
} has no method 'noConflict'
ОБНОВЛЕНИЕ 2:
$(document).ready(function() {
debugger;
});
<input type="text" id="test" name="test" value="123" />
Когда я запускаю следующий код в консоли, я получил следующие результаты:
$("#test").val()
TypeError: Cannot call method 'val' of null
jQuery("#test").val()
"123"
Спасибо
См. jQuery.noConflict(). Могут ли другие библиотеки javascript на вашей странице использовать переменную $
?
$
- это просто переменная, которая используется для псевдонима jQuery
и является переменной, все может быть назначено ему.
$
и jQuery
оба одинаковы, кроме $
является просто псевдонимом jQuery
, который вы можете изменить или удалить с помощью режима jQuery.noConflict
.
$также используется в Prototype.js, который представляет собой структуру javascript, такую как jQuery. Возможно, ваш проект также включает ссылки на эту структуру.
Для получения дополнительной информации о том, как работает прототип доллара, перейдите здесь.
Вы можете заставить обе работать вместе с инструкцией noConflict, как указано в других ответах. Мы делаем это в одном из наших проектов, который использует $(элемент) для устаревшего кода прототипа и jQuery (элемент) для нового кода jQuery.
Похоже, что что-то взяло $, для переназначения jQuery в $, попробуйте перейти:
var $ = jQuery;
Возможно, у вас есть другая библиотека, которая использует $?
jQuery
и $
совпадают - см. исходный код jQuery:
window.jQuery = window.$ = jQuery;
Возможно, вы используете другую библиотеку, которая использует переменную $, и тогда вам нужно решить конфликт имен.
<script type="text/javascript">
jQuery.noConflict();
jQuery(document).ready(function($) {
// Code that uses jQuery $ can follow here.
});
// Code that uses other library $ can follow here.
</script>
Или вы можете использовать один из следующих фрагментов (в нем не будет конфликта $):
// Method 1
jQuery(document).ready(function($){
/* some code that uses jQuery $ */
});
// Method 2
(function($) {
/* some code that uses jQuery $ */
})(jQuery);