Ссылка Ошибка: $ не определено [дубликат]

Я преобразовал простое приложение NetBeans 8 Java FXML в управляемый Maven. Тогда у меня возникли проблемы, потому что методы getResource() не смогли найти файлы .fxml. В моем первоначальном приложении fxmls были разбросаны по дереву пакетов - каждый рядом с файлом класса контроллера. После того, как я сделал Clean и построил в NetBeans, я проверил результат .jar в целевой папке - .jar вообще не содержал никакого fxml. Все fxmls были странно исчезли.

Затем я поместил все fxmls в папку resources / fxml и соответственно установил параметры метода getResource, например: FXMLLoader(App.class.getClassLoader().getResource("fxml/ObjOverview.fxml"));. В этом случае все прошло нормально. Папка fxml появилась внутри корня .jar и содержала все мои fxmls. Программа работает как ожидалось.

384
задан Manikandan C 31 May 2018 в 06:01
поделиться

30 ответов

убедитесь, что вы действительно загрузите jquery, это не jquery - это ui!

  <script language="JavaScript" 
    src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.0/jquery-ui.min.js">
  </script>

Это правильный источник скрипта для jquery:

 <script language="JavaScript"  src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.0/jquery.min.js"></script>
459
ответ дан Josh Habdas 16 August 2018 в 00:47
поделиться
  • 1
    Что касается вашего кодового блока, $(document) не будет работать, если у вас нет тега script, включая jQuery перед этим утверждением ... – PatrikAkerstrand 7 December 2010 в 16:07
  • 2
    Я хотел бы добавить, что у меня была такая же проблема, как и у OP, и моя проблема заключалась в том, что использование https с библиотекой jquery не так хорошо работает. – Mike Cheel 20 October 2011 в 14:36
  • 3
    (функция ($) {}) (jQuery); – JackMahoney 4 April 2013 в 05:40
  • 4
    @Patrik: см. Мой ответ для решения, используя секцию сценариев в представлении. Таким образом, сначала загрузится jquery, а $ - правильно. – angularsen 3 December 2013 в 17:01
  • 5
    Проверьте, есть ли у вас асинхронный скрипт, что вызвало проблему в моем случае. – Anders 3 January 2017 в 14:56

Эта ошибка может быть вызвана только одной из трех вещей:

  1. Ваш JavaScript-файл неправильно загружен на вашу страницу
  2. У вас есть неудачная версия jQuery , Это может произойти из-за того, что кто-то редактировал основной файл, или плагин, возможно, перезаписал переменную $.
  3. У вас работает JavaScript до полной загрузки страницы и, как таковой, до полной загрузки jQuery.

Вы должны проверить панель Firebug net , чтобы проверить, действительно ли файл загружен правильно. Если нет, он будет подсвечен красным и будет указывать «404» рядом с ним. Если файл загружается должным образом, это означает, что проблема связана с номером 2.

Убедитесь, что весь код jQuery jQuery запущен внутри кодового блока, например:

$(document).ready(function () {
  //your code here
});

будет гарантировать, что ваш код будет загружен после инициализации jQuery.

Последнее, что нужно проверить, - убедиться, что вы не загружаете плагины перед загрузкой jQuery. Плагины расширяют объект «$», поэтому, если вы загружаете плагин перед загрузкой ядра jQuery, вы получите описанную вами ошибку.

Примечание. Если вы загружаете код, который не требует jQuery для запустить его не нужно размещать внутри обработчика jQuery. Этот код можно разделить с помощью document.readyState .

459
ответ дан Josh Habdas 16 August 2018 в 00:47
поделиться
  • 1
    Что касается вашего кодового блока, $(document) не будет работать, если у вас нет тега script, включая jQuery перед этим утверждением ... – PatrikAkerstrand 7 December 2010 в 16:07
  • 2
    Я хотел бы добавить, что у меня была такая же проблема, как и у OP, и моя проблема заключалась в том, что использование https с библиотекой jquery не так хорошо работает. – Mike Cheel 20 October 2011 в 14:36
  • 3
    (функция ($) {}) (jQuery); – JackMahoney 4 April 2013 в 05:40
  • 4
    @Patrik: см. Мой ответ для решения, используя секцию сценариев в представлении. Таким образом, сначала загрузится jquery, а $ - правильно. – angularsen 3 December 2013 в 17:01
  • 5
    Проверьте, есть ли у вас асинхронный скрипт, что вызвало проблему в моем случае. – Anders 3 January 2017 в 14:56

Это сработало для меня (проект MVC5):

<script src="~/Scripts/jquery-1.10.2.js" type="text/javascript"></script>
0
ответ дан 40-Love 16 August 2018 в 00:47
поделиться

У меня такая же проблема, и ни один случай не разрешает мне проблему. Единственное, что работает для меня, оно помещено в файл Site.master, следующее:

<script src="<%= ResolveUrl("~/Scripts/jquery-1.7.1.min.js") %>" type="text/javascript"></script>
<script src="<%= ResolveUrl("~/Scripts/bootstrap/js/bootstrap.min.js") %>" type="text/javascript"></script>

С src = "& lt;% = ResolveUrl (" ") ... нагрузка jQuery на страницах содержимого правильно.

0
ответ дан amelian 16 August 2018 в 00:47
поделиться

Сначала вам нужно убедиться, что сценарий jQuery загружен. Это может быть из CDN или локального на вашем веб-сайте. Если вы не загрузите это первым, прежде чем пытаться использовать jQuery, он скажет вам, что jQuery не определен.

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

Это может быть в HEAD или в нижнем колонтитуле страницы, просто убедитесь, что вы загрузили его, прежде чем пытаться вызвать любые другие вещи jQuery.

Тогда вам нужно использовать одно из двух решений ниже

(function($){
// your standard jquery code goes here with $ prefix
// best used inside a page with inline code, 
// or outside the document ready, enter code here
 })(jQuery); 

или

jQuery(document).ready(function($){
// standard on load code goes here with $ prefix
// note: the $ is setup inside the anonymous function of the ready command
});

. Помните, что много раз $ (документ). ready (function () {// здесь код}); не будет работать, особенно в wordpress.

49
ответ дан Andrew Killen 16 August 2018 в 00:47
поделиться
  • 1
    «jQuery не определен». Однако он существует после загрузки страницы. – Paul Totzke 22 March 2016 в 17:52
  • 2
    – Andrew Killen 23 March 2016 в 16:02
  • 3
    Извините, я думал, что это была техника, в которой вы могли бы использовать скрипты в любом порядке. Да, я использовал это в разделе body в стиле MVC. mycode.js, то jQuery.js являются последними 2 вещами на странице. – Paul Totzke 23 March 2016 в 18:00
  • 4
    Не волнуйся, Пол, я отредактировал решение, чтобы включить «ты должен ... загрузить сначала». :) – Andrew Killen 24 March 2016 в 08:31
  • 5
    Это устраняет проблему «Мои скрипты находятся в правильном порядке, но сценарии загружаются в другом порядке». Я помню, как это делалось 4 года назад, но я не могу вспомнить, какую проблему он решил. – Paul Totzke 24 March 2016 в 13:36

Используйте секцию сценариев в макете представления и макета.

Поместите все ваши сценарии, определенные в вашем представлении, в разделе «Скрипты» представления. Таким образом, вы можете загрузить основную компоновку после загрузки всех других скриптов. Это настройка по умолчанию при запуске нового веб-проекта MVC5. Не знаю о более ранних версиях.

Просмотры / Foo / MyView.cshtml:

// The rest of your view code above here.

@section Scripts 
{ 
    // Either render the bundle defined with same name in BundleConfig.cs...
    @Scripts.Render("~/bundles/myCustomBundle")

    // ...or hard code the HTML.
    <script src="URL-TO-CUSTOM-JS-FILE"></script>

    <script type="text/javascript">
      $(document).ready(function () {

        // Do your custom javascript for this view here. Will be run after 
        // loading all the other scripts.            
      });
    </script>
}

Просмотры / Shared / _Layout.cshtml

<html>
<body>
    <!-- ... Rest of your layout file here ... -->

    @Scripts.Render("~/bundles/jquery")
    @Scripts.Render("~/bundles/bootstrap")
    @RenderSection("scripts", required: false)
</body>
</html>

Обратите внимание, раздел scripts отображается последним в файле основного макета.

16
ответ дан angularsen 16 August 2018 в 00:47
поделиться
  • 1
    Примечание. Представленные разделы не поддерживаются в частичных представлениях по дизайну. – Adam Naylor 21 May 2015 в 10:37
  • 2
    Это то, что я должен был сделать для моего исправления .... и я должен был бы лучше использовать скрипты в первую очередь, но забыл об этом, пока не искал исправление. – Caverman 12 February 2018 в 20:08

В моем случае я указывал на Google, размещенный в JQuery. Он был включен правильно, но я был на HTTPS-странице и вызывал его через HTTP. Как только я исправил проблему (или разрешил небезопасный контент), она выстрелила прямо.

2
ответ дан Anthony 16 August 2018 в 00:47
поделиться

u просто добавьте при запуске вашей страницы

 <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>

и проверьте свою ссылку src в любой адресной строке браузера, если вы получаете код, это будет работать на вас. Асиф

0
ответ дан asifaftab87 16 August 2018 в 00:47
поделиться

У меня такое же сообщение об ошибке, когда я опечатал ссылку jQuery, а вместо type="text/javascript" набрал «... javascirpt». ;)

4
ответ дан Brian Mains 16 August 2018 в 00:47
поделиться
  • 1
    Эврика! У меня был мой type="text/css". Спасибо, что спасли мое здравомыслие! – Jeriko 27 June 2011 в 22:32
  • 2
    Я спустился и имел type="javascript". Потратил 30 минут на то, чтобы найти это. – mason 22 April 2015 в 03:13

Если вызов плагина jQuery находится рядом с </body>, и ваш сценарий загружен до этого, вы должны сделать свой код запущенным после события window.onload, например:

window.onload = function() {
  //YOUR JQUERY CODE
}

`

, поэтому ваш код будет запускаться только после загрузки окна, когда все активы будут загружены. В этой точке будет определен jQuery ($).

Если вы используете это:

$(document).ready(function () {
  //YOUR JQUERY CODE
});

`

, $ isn 't еще не определено в это время, потому что он вызывается до загрузки jQuery, и ваш скрипт не будет работать в этой первой строке на консоли.

32
ответ дан Bruno Peres 16 August 2018 в 00:47
поделиться
  • 1
    Как правило, плохая идея привязываться к window.unload. Это будет эффективно единственное событие, которое запускается !!! – Rudi Strydom 25 April 2016 в 08:48
  • 2
    Примечание. Помните, что вы можете назначить только одну функцию window.onload, если вы назначили ей другую функцию, предыдущий не будет выполнен. – Bruno Peres 25 May 2016 в 15:25
  • 3
    – Josh Habdas 1 June 2017 в 05:15

У меня была эта проблема один раз без видимых причин. Это происходило локально, пока я работал через сервер разработки aspnet. Он работал, и я вернул все в состояние, в котором оно работало раньше, и все же это не сработало. Я посмотрел в хром-отладчик, и jquery-1.7.1.min.js загрузился без каких-либо проблем. Это было очень странно. Я до сих пор не знаю, в чем проблема, но закрытие браузера, закрытие сервера разработки, а затем попытка его сортировки.

1
ответ дан cedd 16 August 2018 в 00:47
поделиться

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

<script type="text/javascript" src="js/script.js"></script>

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>

Это приводит к тому, что $ не определено

Поместите jquery.js раньше ваш тег скрипта и он будет работать;) так:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>

<script type="text/javascript" src="js/script.js"></script>
171
ответ дан Elmo 16 August 2018 в 00:47
поделиться

При использовании jQuery в asp.net, если вы используете основную страницу и вы загружаете исходный файл jquery, убедитесь, что у вас есть заголовок contentplaceholder после того, как все ссылки на сценарий jquery.

У меня возникла проблема, когда любые страницы, которые использовали эту главную страницу, возвращали «$ не определен» просто потому, что неправильный порядок делал код клиента на стороне перед созданием объекта jquery. Поэтому убедитесь, что у вас есть:

<head runat="server">
    <script type="text/javascript" src="Scripts/jquery-VERSION#.js"></script>
    <asp:ContentPlaceHolder id="Header" runat="server"></asp:ContentPlaceHolder>
</head>

Таким образом, код будет работать по порядку, и вы сможете запускать код jQuery на дочерних страницах.

0
ответ дан Francis Musignac 16 August 2018 в 00:47
поделиться

У меня была такая же проблема, и я не мог понять, что ее вызывает. Недавно я преобразовал свои HTML-файлы с японского на UTF-8, но я ничего не делал с файлами сценариев. Как-то jquery-1.10.2.min.js был поврежден в этом процессе (я до сих пор не знаю, как). Замена jquery-1.10.2.min.js оригиналом исправил его.

0
ответ дан Gavin 16 August 2018 в 00:47
поделиться

Вы просто поместили библиотеку jQuery в раздел заголовка html:)

<head>
<script src="assets/js/jquery-1.10.2.min.js"></script>
<script src="assets/js/bootstrap.min.js"></script>
</head>
0
ответ дан haryx8 16 August 2018 в 00:47
поделиться

Эта ошибка означает, что jQuery еще не загружен на страницу. Использование $(document).ready(...) или любого его варианта не принесет пользы, так как $ является функцией jQuery.

Использование window.onload должно работать здесь. Обратите внимание, что для window.onload можно назначить только одну функцию. Чтобы избежать потери исходной логики onload, вы можете украсить оригинальную функцию следующим образом:

originalOnload = window.onload;
window.onload = function() {
  if (originalOnload) {
    originalOnload();
  }
  // YOUR JQUERY
};

Это выполнит функцию, которая была первоначально назначена на window.onload, а затем выполнит // YOUR JQUERY.

Подробнее о шаблоне декоратора см. в https://en.wikipedia.org/wiki/Decorator_pattern .

2
ответ дан Kyle McVay 16 August 2018 в 00:47
поделиться

Я просто сделал то же самое и обнаружил, что у меня было много

type="text/javacsript"

. Так что они загружались, но больше не было намека на то, почему он не работает. Само собой разумеется, правильная орфография зафиксировала его.

25
ответ дан Martijn Pieters 16 August 2018 в 00:47
поделиться
  • 1
    Замечание модератора : опечатка в этом сообщении преднамеренная , чтобы проиллюстрировать точку. Пожалуйста, не редактируйте сообщение, чтобы «исправить» это. – Martijn Pieters♦ 6 April 2018 в 22:55

У нас та же проблема .... но случайно я проверил свойства папки и установил что-то ...

Вы должны проверить свойства каждой папки, к которой вы обращаетесь.

  1. правая кнопка мыши
  2. вкладка «Разрешения»
  3. устанавливает доступ к папке: OWNER: создание и удаление файлов GROUP: файлы доступа ДРУГИЕ: файлы доступа
  4. ]

Надеюсь, что это решение ......

0
ответ дан McGarnagle 16 August 2018 в 00:47
поделиться

после некоторых тестов я нашел быстрое решение, вы можете добавить в верхней части своей индексной страницы:

<script>
$=jQuery;
</script>

он работает очень хорошо:)

4
ответ дан Mimouni 16 August 2018 в 00:47
поделиться

Это означает, что ваша библиотека jQuery еще не загружена.

Вы можете переместить свой код после вытаскивания библиотеки jQuery.

или вы можете использовать что-то вроде этого

window.onload = function(){
  // Your code here
};  
4
ответ дан Nesar 16 August 2018 в 00:47
поделиться
  • 1
    Это срабатывает после загрузки DOM, но не при загрузке элементов управления, javascript и других программ, работающих в фоновом режиме. Для этого необходимо использовать временную задержку. – Fandango68 22 November 2016 в 01:13
  • 2
    Исправлена ​​ошибка для меня – Brandon Harris 25 July 2017 в 19:03

Я использую Url.Content и никогда не сталкиваюсь с проблемой.

<script src="<%= Url.Content ("~/Scripts/jquery-1.4.1.min.js") %>" type="text/javascript"></script>
2
ответ дан Peter Lillevold 16 August 2018 в 00:47
поделиться

Оказывается, моя проблема была довольно глупой: я поставил <script href=""> вместо <script src="">

0
ответ дан rtpHarry 16 August 2018 в 00:47
поделиться

похоже, что если вы найдете файлы jquery.js в одной папке или в некоторых подпапках, где находится ваш html-файл, проблема Firebug будет решена. например, если ваш html находится под C: / folder1 /, то ваши js-файлы должны находиться где-то под C: / folder1 / (или C: / folder1 / folder2 и т. д.) и соответствующим образом обрабатываться в html-документе. надеюсь, что это поможет.

0
ответ дан sc123 16 August 2018 в 00:47
поделиться

После того, как вы попробовали все здесь без каких-либо результатов, я решил проблему просто, переместив тег src скрипта из тела в голову

0
ответ дан Spring 16 August 2018 в 00:47
поделиться

Используете ли вы какие-либо другие библиотеки JavaScript? Если это так, вам, вероятно, придется использовать jQuery в режиме совместимости:

http://docs.jquery.com/Using_jQuery_with_Other_Libraries

7
ответ дан tambler 16 August 2018 в 00:47
поделиться

Похоже, что jQuery не загружается должным образом. Какой источник / версия вы используете?

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

4
ответ дан the Tin Man 16 August 2018 в 00:47
поделиться

Как указано выше, это происходит из-за конфликта переменной $.

Я разрешил эту проблему, зарезервировав вторичную переменную для jQuery без конфликтов.

var $j = jQuery.noConflict();

и затем используйте его в любом месте

$j( "div" ).hide();

. Более подробную информацию можно найти здесь здесь

6
ответ дан Tough Guy 16 August 2018 в 00:47
поделиться

В решении упоминается - «Последнее, что нужно проверить, - убедиться, что вы не загружаете плагины перед загрузкой jQuery. Плагины расширяют объект« $ », поэтому, если вы загружаете плагин перед загрузкой ядра jQuery , то вы получите сообщение об ошибке.

Чтобы избежать этого -

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

2
ответ дан user 16 August 2018 в 00:47
поделиться

Просто поместите jquery url в верхней части вашего jquery-кода

, как это -

<script src="<%=ResolveUrl("~/Scripts/jquery-1.3.2.js")%>" type="text/javascript"></script>

<script type="text/javascript">
    $(function() {
        $('#post').click(function() {
            alert("test"); 
        });
    });
</script>
1
ответ дан vikrantx 16 August 2018 в 00:47
поделиться

У меня была та же проблема, и это было потому, что моя ссылка на jQuery.js не была в теге. Как только я переключил это, все начало работать.

Anthony

2
ответ дан Anthony 16 August 2018 в 00:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: