TypeError: 'undefined' не является функцией (оценка ' $(document)')


  1. Я использую сайт WordPress.
  2. Я включаю этот скрипт в заголовок.

когда скрипт загружается, я получаю эту ошибку:

TypeError: 'undefined' не является функцией (оценка ' $(document)')

Я понятия не имею, что это вызывает или что это вообще значит.

в firebug, я получаю это:

$ не является функцией

14 134

14 ответов:

Wordpress использует jQuery в noConflict режим по умолчанию. Вы должны ссылаться на него с помощью jQuery В имя переменной, а не $, например,

jQuery(document);

вместо

$(document);

вы можете легко обернуть это в самоисполняющуюся функцию, чтобы $ снова ссылается на jQuery (и также избегает загрязнения глобального пространства имен), например

(function ($) {
   $(document);
}(jQuery));

используйте jQuery noConflict. Это сделало чудеса для меня

var example=jQuery.noConflict();
example(function(){
example('div#rift_connect').click(function(){
    example('span#resultado').text("Hello, dude!");
    });
});

то есть, предполагая, что вы включили jQuery в свой HTML

<script language="javascript" type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>

используйте этот:

var $ =jQuery.noConflict();

попробуйте этот фрагмент:

jQuery(function($) {
  // Your code.
})

Он работал для меня, может быть, это поможет вам тоже.

у меня была эта проблема только на Chrome.

Я пробовал добавлять

var $ =jQuery.noConflict();

как раз перед вызовом

$(document).ready(function () {

это сработало.

Спасибо большое

также проверьте включение jQuery, за которым следуют некоторые компоненты/другие библиотеки (например, jQuery UI), а затем случайно снова включите jQuery - это переопределит jQuery и отбросит помощники компонентов (например .datepicker)от экземпляра.

 ;(function($){
        // your code
    })(jQuery);

поместите свой JS-код внутри закрытия выше, он должен решить проблему.

Я бы использовал это

(function ($) {
   $(document);
}(jQuery));

Я также сталкивался с такими проблемами много раз в web development carrier. На самом деле это не конфликт JS, когда мы загружаем html-сайт в браузер, мы не сталкиваемся с такой ошибкой, но когда мы загружаем этот тип веб-сайта через localhost, мы сталкиваемся с такой проблемой. Это из-за localhost. Когда мы загружаем скрипты через localhost, он сканирует скрипт и выводит результат. Но когда мы не использовали localhost. Он просто сканирует вывод. Пример, когда мы пишем php код putside The localhost и запускаем без хост мы получаем ошибку. Но если код верен и выполняется через хост, мы получаем фактический вывод, и когда мы используем элемент inspect, мы получаем выходной код в формате HTMl, но не в формате PHP, это связано с рендерингом кода.

Это ошибка рендеринга. Поэтому для исправления этих ошибок кода jquery одно из решений может использовать этот метод.

jQuery(document).ready(function($){
/******** Body of Jquery Code*****/
});

этот код регистрирует ' $ ' как переменную для функции, применяя jquery. Остальное по умолчанию .JS файл только читать как JavaScript.

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

две вещи:

  1. убедитесь, что перед вашим $(документом) добавлена библиотека jQuery.
  2. затем просто измените все " $ " с помощью: jQuery , как и предыдущие комментарии.

обернуть весь скрипт между этим...

<script>
    $.noConflict();
    jQuery( document ).ready(function( $ ) {
      // Code that uses jQuery's $ can follow here.
    });
</script>

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

вы можете использовать как jQuery, так и $ в приведенном ниже фрагменте. это сработало для меня

jQuery( document ).ready(function( $ ) {
  // jQuery(document)
  // $(document)
});

вы можете передать $ в функции ()

jQuery(document).ready(function($){

// jQuery code is in here

});

или вы можете заменить $(document); С jQuery(document);

или вы можете использовать jQuery.noConflict()

var jq=jQuery.noConflict();
jq(document).ready(function(){  
  jq('selector').show();
});