JQuery - $ не определен

у меня простой jQuery и событие click

<script type="text/javascript">
    $(function() {
        $('#post').click(function() {
            alert("test"); 
        });
    });
</script>

и ссылка jquery, определенная на сайте.мастер!--3-->

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

Я проверил, что скрипт разрешен правильно, я могу видеть разметку и просматривать скрипт непосредственно в firebug, поэтому я должен быть найден. Тем не менее, я все еще получаю:

$ не определен

и ни один из jquery не работает. Я также пробовал различные варианты этого, как $(документ.)готов и jQuery и т. д.

Это приложение MVC 2 на .net 3.5, я уверен, что я действительно плотный, везде в google говорит, чтобы проверить файл правильно, на который я проверил и проверил снова, пожалуйста, сообщите! :/

30 ответов


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

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

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

убедитесь, что весь код jQuery javascript выполняется внутри блока кода, такого как:

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

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

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

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


возможно, у вас есть тег сценария, вызванный до вызова сценария 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>

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

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

Это может быть в голове или в нижнем колонтитуле страницы, просто убедитесь, что вы загружаете его, прежде чем пытаться вызвать любой другой материал 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 () {//code here}); не будет работать, особенно в wordpress.


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

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

`

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

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

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

`

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


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

type="text/javacsript"

Итак, они загружались, но больше никаких намеков на то, почему он не работает. Разумеется, правильное написание исправил.


использовать раздел скрипты в представлении и мастер-макета.

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

Views/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>
}

Просмотры / Общие/_Layout.cshtml по

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

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

обратите внимание:скрипты раздел отображается последним в файле мастер-макета.


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

  <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>

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

http://docs.jquery.com/Using_jQuery_with_Other_Libraries


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

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

var $j = jQuery.noConflict();

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

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

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


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

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

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

window.onload = function(){
  // Your code here
};  

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


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

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


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

<script>
$=jQuery;
</script>

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


Я использую URL-адрес.Содержание и никогда не есть проблема.

<script src="<%= Url.Content ("~/Scripts/jquery-1.4.1.min.js") %>" type="text/javascript"></script>

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

для избежания этого -

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


У меня была та же проблема и это потому, что моя ссылка на проект.Джей-ЭС не было в списке. Как только я его поменял, все заработало.

Энтони


эта ошибка означает, что 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 Более подробно о шаблон "декоратор".


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


просто поместите url-адрес jQuery в верхней части кода 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>

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


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

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

  1. щелкните правой кнопкой мыши папку
  2. ''
  3. установить доступ к папке : Владелец: создание и удаление файлов Группа: доступ к файлам Другие: доступ к файлам

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


при использовании 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 на дочерних страницах.


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


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


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

<head>
<script src="assets/js/jquery-1.10.2.min.js"></script>
<script src="assets/js/bootstrap.min.js"></script>
</head>

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


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


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

<script src="~/Scripts/jquery-1.10.2.js" type="text/javascript"></script>

u просто добавьте в начале вашей страницы

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

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


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

<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="