$ is not defined в jQuery: что это значит и что делать

Где можно встретить $ is not defined и что это значит

Ско­рее все­го, эту ошиб­ку вы встре­ти­те в сооб­ще­ни­ях кон­со­ли бра­у­зе­ра, когда буде­те под­клю­чать к сво­е­му сай­ту какую-нибудь JavaScript-библиотеку, кото­рая исполь­зу­ет jQuery. Напри­мер, это может быть листал­ка фото­гра­фий или фор­ма обрат­ной свя­зи.

$ is not defined озна­ча­ет, что на момент, когда ваша биб­лио­те­ка пыта­лась сде­лать что-то с помо­щью jQuery, сама jQuery либо не была загру­же­на, либо загру­зи­лась некор­рект­но.

Что делать с ошибкой $ is not defined

Сде­лай­те так, что­бы сна­ча­ла у вас кор­рект­но загру­жа­лась jQuery, и толь­ко потом — осталь­ной код, кото­рый исполь­зу­ет эту биб­лио­те­ку. Обыч­но для это­го доста­точ­но поста­вить вызов jQuery рань­ше всех дру­гих вызо­вов.

Было:
<script src="ВАШ СКРИПТ"></script>
<script src="https://yastatic.net/jquery/3.3.1/jquery.min.js"></script>

Ста­ло:
<script src="https://yastatic.net/jquery/3.3.1/jquery.min.js"></script>
<script src="ВАШ СКРИПТ"></script>

Если перемещение вызова jQuery не помогло

Про­верь­те, отку­да вы берё­те биб­лио­те­ку jQuery. Может быть, вы берё­те её с уда­лён­но­го сай­та, до кото­ро­го ваш бра­у­зер не может дозво­нить­ся (Рос­ком­над­зор поста­рал­ся или про­сто сайт лежит). Тогда ска­чай­те jQuery на ком­пью­тер и вызо­ви­те локаль­но:

<script src="script/jquery.min.js"></script> <!--при этом не забудьте скачать и положить сюда библиотеку jQuery-->
<script src="ВАШ СКРИПТ"></script>

Про­стой спо­соб убе­дить­ся, что jQuery загру­жа­ет­ся нор­маль­но, — ско­пи­ро­вать её адрес из кода и вста­вить в адрес­ную стро­ку бра­у­зе­ра. Если вам выве­дет­ся про­грамм­ный код, зна­чит, jQuery вам доступ­на и загру­жа­ет­ся. Если что-то пой­дёт не так — вы уви­ди­те это на экране.

Напри­мер, попро­буй­те перей­ти по этой ссыл­ке: https://yastatic.net/jquery/3.3.1/jquery.min.js — если она у вас откры­ва­ет­ся и вы види­те меси­во из кода, зна­чит, jQuery для вас откры­лась.

Объясните подробнее!

Знак $ в JavaScript — это назва­ние сущ­но­сти, через кото­рую мы дела­ем все­воз­мож­ные запро­сы с помо­щью jQuery.

jQuery — это допол­ни­тель­ная биб­лио­те­ка, кото­рая упро­ща­ет рабо­ту с эле­мен­та­ми на веб-странице. Напри­мер, если нам нуж­но с помо­щью JavaScript на лету поме­нять какую-то над­пись на стра­ни­це, то без jQuery нам бы при­шлось сде­лать так:

document.getElementById('someElement').innerHTML='Some New Text';

А через jQuery всё то же самое дела­ет­ся так:

$("#someElement").html("Some New Text");

Знак дол­ла­ра при отлад­ке JS (то есть в кон­со­ли) — при­знак того, что в коде исполь­зу­ет­ся jQuery, это её фир­мен­ный знак.

jQuery настоль­ко рас­про­стра­не­на, что на её осно­ве уже дела­ют дру­гие биб­лио­те­ки: все­воз­мож­ные гале­реи, пере­клю­чал­ки, интер­фейс­ные шту­ки, фор­мы и т. д. Что­бы такие биб­лио­те­ки рабо­та­ли, сна­ча­ла в бра­у­зе­ре долж­на быть загру­же­на сама jQuery, а уже потом — нуж­ная вам биб­лио­те­ка.

Тех­ни­че­ски с точ­ки зре­ния бра­у­зе­ра $ — это про­сто объ­ект в язы­ке JavaScript. У него есть мето­ды, кото­рые долж­ны быть про­пи­са­ны, преж­де чем бра­у­зер смо­жет их испол­нить. И если на момент вызо­ва этих мето­дов они не были нигде про­пи­са­ны, бра­у­зер спра­вед­ли­во воз­му­тит­ся. А они не будут про­пи­са­ны толь­ко в одном слу­чае: при загруз­ке jQuery что-то пошло не так.

Воз­мож­ные при­чи­ны неза­груз­ки jQuery:

  • Её про­сто забы­ли доба­вить в код.
  • Она загру­жа­ет­ся с уда­лён­но­го сай­та, кото­рый сей­час для вас недо­сту­пен. Отклю­чён интер­нет, сайт лежит, забло­ки­ро­ван или в его адре­се опе­чат­ка.
  • При загруз­ке что-то пошло не так, и вме­сто jQuery при­ле­те­ло что-то дру­гое.
  • Уже после загруз­ки jQuery какой-то дру­гой скрипт пере­опре­де­лил объ­ект $ (и всё сло­мал).
  • Бра­у­зер запре­тил загруз­ку скрип­та с дру­го­го сай­та.
  • Она загру­жа­ет­ся после того, как её вызы­ва­ют (а не до).
  • Загру­жа­ет­ся какая-то испор­чен­ная вер­сия jQuery (мало­ве­ро­ят­но).