Uncaught ReferenceError: $ не определено?

531

Как этот код выдает

Неподготовлено ReferenceError: $не определено

когда это было ОК до?

$(document).ready(function() {
    $('#tabs > ul').tabs({ fx: { opacity: 'toggle' } });
    $('#featuredvid > ul').tabs();
});

Результаты на вкладках больше не закрываются.

jQuery ссылается в заголовке:

<script language="JavaScript" type="text/javascript" src="<?php echo get_option('siteurl') ?>/js/sprinkle.js"></script>
<script language="JavaScript" type="text/javascript" src="<?php echo get_option('siteurl') ?>/js/jquery-1.2.6.min.js"></script>
<script language="JavaScript" type="text/javascript" src="<?php echo get_option('siteurl') ?>/js/jquery-ui-personalized-1.5.2.packed.js"></script>
  • 0
    <script language = "JavaScript" type = "text / javascript" src = "<? php echo get_option ('siteurl')?>> js / jquery-1.2.6.min.js"> </ script> Включите это Топ
  • 0
    Может быть, когда-нибудь вызов функции ready перед загрузкой JQuery, может произойти эта ошибка
Теги:
referenceerror

36 ответов

574

Сначала вы должны поместить ссылки на сценарии jquery.

<script language="JavaScript" type="text/javascript" src="/js/jquery-1.2.6.min.js"></script>
<script language="JavaScript" type="text/javascript" src="/js/jquery-ui-personalized-1.5.2.packed.js"></script>
<script language="JavaScript" type="text/javascript" src="/js/sprinkle.js"></script>
  • 22
    Просто чтобы убедиться, что это ясно: вы не можете поместить ссылку на скрипт в jquery-ui перед самим скриптом jquery. Вот что мне помогло: сначала jquery-xxxmin.js, а затем jquery-ui-xxxxxx.js.
  • 21
    Спустя 2 года ответ все еще не отмечен галочкой). В этой статье описывается этот и еще 4 наиболее распространенных случая, когда возникает эта ошибка.
Показать ещё 4 комментария
172

Вы вызываете функцию готовности до включения jQuery JavaScript. Ссылка JQuery в первую очередь.

  • 10
    Это не дает ответа на вопрос. Чтобы критиковать или запросить разъяснения у автора, оставьте комментарий под своим постом.
  • 23
    @RamSharma На самом деле это правильный ответ. Вам не нужно больше ничего, чтобы решить проблему.
Показать ещё 2 комментария
88

Это то, что решило это для меня. Первоначально я пошел в Google, скопировал и вставил предложенный им фрагмент кода для jQuery на их странице CDN:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

Фрагмент не включает HTTP: или HTTPS: в атрибуте src но мой браузер, FireFox, нуждался в нем, поэтому я изменил его на: edit: это работало и для меня с Google Chrome

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

Тогда это сработало.

  • 12
    Строго говоря, фрагмент / пример Google верен - их атрибут src является URL-адресом без протокола, что означает, что браузер должен использовать протокол (HTTP / HTTPS) вызывающей страницы. Смотрите paulirish.com/2010/the-protocol-relative-url . Рекомендуется избегать предупреждений о смешанном содержании, если ваша страница обслуживается по протоколу SSL, а сценарии - нет.
  • 12
    Вероятно, одна из распространенных проблем заключается в том, что во время разработки используются относительные к протоколу URL-адреса, а в солнечный день вы пытаетесь загрузить страницу из локального файла. Ваш браузер будет оптимистично пытаться загрузить file://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js и вы удивляетесь, почему он не отображается в сетевой консоли.
Показать ещё 1 комментарий
42

Если ваш пользовательский script загружен до того, как плагин jQuery будет загружен в браузер, тогда может возникнуть такая проблема. Таким образом, всегда сохраняйте свой собственный код JavaScript или jQuery после вызова плагина jQuery, поэтому решение для этого:

Сначала добавьте ссылку на файл jQuery, размещенный в GoogleApis, или локальный файл jQuery, который вы скачаете с http://jquery.com/download/ и размещаете на своем сервере:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

или любой плагин для jQuery. Затем разместите свою собственную ссылку или код файла script:

<script src="js/custom.js" type="text/javascript"></script>
  • 3
    If your custom script is loaded before the jQuery plugin is loaded to the browser then this type of problem may occur это идеальный ответ .. в моем случае скрипт был в нижнем колонтитуле
36

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

<script src="http://code.jquery.com/jquery-1.10.2.js"></script>
<script src="http://code.jquery.com/ui/1.11.2/jquery-ui.js"></script>
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
<script src="exponential.js"></script>
  • 0
    Просто использовал это, чтобы исправить мой jschart.
25

Хорошо, моя проблема была другой: она была Document Security в Chrome.

Глядя на ответы здесь, было очевидно, что я как-то не загружал файлы jquery перед вызовом функций $(document).ready() и т.д. Однако все они были в правильных положениях.

В моем случае это произошло из-за того, что я обращался к контенту через безопасное соединение HTTPS, тогда как страница пыталась загрузить данные, размещенные на CDN, из Google и т.д. Решение заключалось в их локальном хранении, а затем чем от CDN каждый раз.

Изменить: Другой способ сделать это - связать со всеми материалами, размещенными на CDN, как https://, а не http://- тогда модель не жалуется.

  • 5
    Также обратите внимание, что вы можете оставить протокол вне ссылок, и он выберет подходящий в зависимости от контекста (при условии, что существуют версии http и https). См. Stackoverflow.com/a/3622615/4332
  • 0
    Ага. это решило мою проблему, я загружал скрипты из URL-адреса следующим образом: // cdnjs.cloudflare.com / ajax / libs / jquery / 1.12.0 / jquery.min.js´. Использование « cdnjs ...» прекрасно работает
23

Добавьте библиотеку перед запуском script. Вы можете добавить любой из следующих ниже CDN, чтобы запустить его.

Google

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>

Microsoft

<script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.2.1.min.js"></script>

Jquery

Если вы хотите, чтобы любая другая версия JQuery cdn проверила эту ссылку .

После этого:

<script type="text/javascript">
$(function(){
    //your stuff
});
or
$(document).ready(function(){
    //your stuff
});    
</script>

Wordpress:

<script type="text/javascript">
var $ = jQuery;
jQuery(document).ready(function($){
     //your stuff
});
</script>
19

Если в wordpress может потребоваться изменить

$(document).ready(function() {

к

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

или добавить

var $ = jQuery;

перед

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

В моем случае у меня было это referenceError, поскольку порядок вызовов script был неправильным. Решено, что, изменив порядок:

<script src="js/index.js"></script>
<script src="js/jquery-1.10.2.js"></script>

к

<script src="js/jquery-1.10.2.js"></script>
<script src="js/index.js"></script>
  • 1
    В основном это была проблема, которую я тоже обнаружил, когда возникает ошибка ссылки для '$'
13

У меня была точно такая же проблема, и ни одно из этих решений не помогло. однако я только что связал файлы .css после файлов .js и проблема чудесным образом исчезла. Надеюсь это поможет.

  • 10
    Во-первых, для лучшей производительности рендеринга страниц вы всегда должны связывать CSS-файлы перед JS-файлами. Во-вторых, порядок файлов css и js не должен влиять на текущую ситуацию.
  • 6
    «То, что решило вашу проблему, не должно решить вашу проблему, и вы не должны делать то, что решило вашу проблему».
12

Я, пожалуй, единственный человек, у которого была моя проблема, но я все равно отказался. Я хотел попытаться сделать мой script асинхронный только для удовольствия. Тогда я забыл об этом, и когда я вышел в прямом эфире, [custom].js файл загружался только 50% времени перед jQuery.js.

Итак, я изменил

<script async src="js/script.js"></script>

to

<script src="js/script.js"></script>

:)

6

Если вы делаете это в .Net и имеете правильный файл script, и вы, jQuery, выглядите отлично, убедитесь, что ваши пользователи имеют доступ к файлу script. Проект, над которым я работал (коллега), имел свой web.config, запрещающий доступ к анонимным пользователям. Страница, над которой я работал, была доступна анонимным пользователям, поэтому они не имели доступа к файлу script. Выбросили в web.config следующее: все было в мире:

  <location path="Scripts">
    <system.web>
      <authorization>
        <allow users="*"/>
      </authorization>
    </system.web>
  </location>
5

Это случилось со мной раньше.

Причина в том, что я подключаю android к веб-просмотру с помощью JS. И я отправил параметр без кавычек.

js.sayHello(hello);

и когда я изменил его на

js.sayHello('hello');

он работал.

  • 0
    Я понятия не имею, что означает параметр без кавычек ... похоже, у вас произошла ошибка ссылки.
  • 0
    У меня была проблема во Freemarker, и причиной было отсутствие одинарных кавычек, поэтому значение обрабатывалось не как строка, а как переменная
5

Исходный файл jquery-1.2.6.min.js не называется командой jQuery $() выполняется раньше <..src='jquery-1.2.6.min.js'>.

Сначала запустите <.. src="/js/jquery-1.2.6.min.js.."> и убедитесь, что путь src прав, затем выполните команду jquery

$(document).ready(function() 
4

Ошибка будет происходить и в следующих двух сценариях.

  • Элемент сценария @section отсутствует в файле HTML
  • Ошибка при доступе к элементам DOM. Например, доступ к элементу DOM упоминается как $( "js-toggle" ) вместо $( ". Js-toggle" ). Фактически этот период отсутствует

Итак, 3 вещи, которые необходимо соблюдать, - добавьте необходимые скрипты, проверьте, добавлены ли они в требуемом порядке и третья синтаксическая ошибка в вашей Java Script.

  • 0
    Да уж. и для атрибутов id $ ('# someDiv')
  • 0
    Голосовать за указатель на скрипты ASP.NET MVC @section
4

Ваш файл JavaScript отсутствует, поэтому произошла ошибка. Просто добавьте файл JavaScript внутри тега <head>. См. Пример:

<script src="js/sample.js" type="text/javascript"></script>
<link href="css/sample.css" rel="stylesheet" type="text/css" />

или добавьте следующий код в тег:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
4

В моем случае это была опечатка, я забыл обратную косую черту и неправильно ссылался на источник.

До src="/scripts/jquery.js"

После   src="scripts/jquery.js"

3

Хорошо, я признаю, что это была действительно глупая вещь, которая когда-то случалась мне. Я изменил тег script, чтобы указать на нужное содержимое и изменил порядок script как правильный в редакторе... но полностью забыл сохранить изменения; (Вы можете смеяться сейчас, но когда вы устали могут возникнуть всевозможные странные проблемы. I

3

В моем случае я забыл включить это:

 <script src ="jquery-2.1.1.js"></script>

Раньше я включал только jquery-mobile, который вызывал эту ошибку.

3

Doh! У меня были смешанные кавычки в моих тегах, которые приводили к разрыву ссылки на jquery. Выполнение проверки в Chrome позволило мне увидеть, что файл не был правильно связан.

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

У меня есть аналогичная проблема, и вы знаете, что из-за того, что сеть отключена, когда я тестирую веб-представление устройства Android, и я этого не понимаю, а локальные js не представляют проблемы, потому что ему не нужна сеть. Это кажется смешным, но он тратит около 1 часа, чтобы понять это.

2

У меня была аналогичная проблема, и это было из-за того, что мне не хватало закрытия > на ссылке в стиле.

1

Вы вызываете функцию готовности до включения jQuery JavaScript. Ссылка JQuery в первую очередь.

Если вы находитесь в ASP.NET MVC, вы можете указать, когда должен отображаться ваш код JS, выполнив следующее:

1. В вашем page.cshtml оберните page.cshtml <script> в раздел и дайте ему имя, общее имя для использования - 'scripts':

@section scripts {
    <script>
        // JS code...
    </script>
}

2. На своей странице _Layout.cshtml добавьте @RenderSection("Scripts", required: false), убедитесь, что поставили его после ссылки на источник Jquery, это сделает ваш код JS визуализированным позже, чем Jquery.

1

У меня была та же проблема, и я решил, поместив jQuery на вершину всех кодов JavaScript, которые есть в моем коде.

Что-то вроде этого:

<script src="https://code.jquery.com/jquery-3.3.1.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>
<script src="js/app.js" type="text/javascript"></script>
<script src="js/form.js" type="text/javascript"></script>
<script src="js/create.js" type="text/javascript"></script>
<script src="js/tween.js" type="text/javascript"></script>

Надежда может помочь кому-то в будущем.

1
var $ = jQuery;
jQuery(document).ready(function($){
  • 1
    Это абсолютно не ответ. Вы должны добавить некоторые объяснения.
  • 0
    Это решение для Wordpress вы должны упомянуть об этом.
Показать ещё 1 комментарий
1

Это также может произойти, если есть проблема с сетью. Это означает, что даже несмотря на то, что "сценарии jquery" находятся на месте и включены до использования, поскольку jquery-скрипты недоступны, во время загрузки страницы, следовательно, определения в "$" рассматриваются как "undefined ссылки".

ДЛЯ ИСПЫТАНИЙ ТЕСТ/ДЕБЮГОВ::. Вы можете попытаться получить доступ к URL-адресу "jquery- script" в браузере. Если она доступна, ваша страница должна загружаться должным образом, иначе она покажет указанную ошибку (или другие ошибки script). Пример - http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js должен быть доступен в браузере (или в контексте браузера).

У меня была аналогичная проблема, в которой я смог загрузить html-страницу (используя скрипты) в моем браузере Windows-хоста, но не смог загрузить в vm-ubuntu. Решение проблемы с сетью устраняет проблему.

1

У меня была аналогичная проблема. Мой тестовый сервер отлично работал с "http". Однако это не удалось в производстве с SSL.

Таким образом, в производстве я добавил "HTPPS" вместо "HTTP" и в тесте, я сохранил его как "HTTP".

Тест:

wp_register_script ('jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js', array(), null, false);

wp_register_script ('custom- script', plugins_url ('/js/custom.js', FILE), массив ('jquery'));

Производство:

wp_register_script ('jquery', 'https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js', array(), null, false);

wp_register_script ('custom- script', plugins_url ('/js/custom.js', FILE), массив ('jquery'));

Надеюсь, это поможет кому-то, кто работает над wordpress.

1

У меня была эта проблема, когда я просматривал интернет через свою мобильную точку доступа. он также сжимал изображения и добавил следующий script в нижней части тега body

<script language="javascript"><!--
bmi_SafeAddOnload(bmi_load,"bmi_orig_img");//-->
</script>

Когда я подключился к соответствующему Wi-Fi-соединению, все, похоже, найдет для меня работу. Надеюсь, что это поможет кому-то.

1

Странно, моя проблема исходила из PHP.

Ошибка API REST API была неудачной, и впоследствии она прерывала загрузку библиотек. Поскольку сбой произошел от вызова REST, он не дал мне ошибку компиляции php.

Удерживайте это как параметр, если загрузка jquery выглядит нормально.

0

Вы не ссылались на библиотеку jQuery.

Вам нужно будет включить строку, похожую на эту в вашем HTML:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
0

Корневая проблема - ошибка ReferenceError. MDN указывает, что блок try/catch является подходящим инструментом для работы. В моем случае я получил неперехваченную ссылочную ошибку для оплаты SDK/библиотеки. Ниже работает для меня.

try {
  var stripe = Stripe('pk_test_---------');
} catch (e) {
    stripe = null;
}

if(stripe){
  //we are good to go now
}

Очевидно, что исправление состоит в том, чтобы загрузить любую SDK/библиотеку, например, jQuery, перед вызовом ее методов, но try/catch не дает вашему общему JavaScript избавиться от ошибок в случае, если вы запускаете этот общий скрипт на странице, которая не загружает какую-либо библиотеку вы используете на подмножестве страниц.

0

Вот худший случай:

Все казалось идеальным. Проведя пару часов, я понял, что файл jquery, который добавлен в правильную позицию, был фактически файлом с пустым контентом!

  • 0
    Это как здравый смысл.
  • 0
    Но это 100% неожиданная причина этой ошибки
-1
$(document).ready(function() {
                $.getJSON("<?php echo site_url('cadmin/survey/chart_survey_assisten'); ?>", function (json) { 
                    var acctregs = new Morris.Donut({
                                // ID of the element in which to draw the chart.
                                element: 'hadir-chart-bar-assisten',
                                // Chart data records -- each entry in this array corresponds to a point on
                                // the chart.
                                data: json,
                                xkey: 'label',
                                ykeys: ['value'],
                                labels: ['Nilai'],
                                barRatio: 0.4,
                                xLabelAngle: 35,
                                hideHover: 'auto',
                                resize: true
                            });
                });
           });
-2

Вам нужно сначала вызвать jquery, а затем вызвать javascript, поскольку java script зависит от jquery, поэтому он должен быть загружен перед javascript, и это решило мою проблему.

-2

Укусил это еще раз, отсутствующие ссылки источника библиотеки. Google Hosted Libraries Похожие ссылки

-2

У меня была эта проблема в Fireox, и она была решена после того, как я изменил имя js файла jQuery, от jquery_1.7.js в jquery1_7.js. Таким образом, я добавляю только одну точку перед расширением.

  • 0
    Мой Firefox сохранил jquery-1.10.1.min.js как jquery-1.10.1_min.js, но, похоже, фанаты опровергают эти ответы.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню