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

У меня есть простое событие jquery click

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

и ссылка на jquery, определенная на сайте.

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

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

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

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

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

Ответ 1

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

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

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

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

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

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

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

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

Ответ 2

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

<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, и он будет работать;) вот так:

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

Ответ 3

Для начала вам нужно убедиться, что скрипт 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
});

имейте в виду, что много раз $ (document).ready(function() {//code here}); не будет работать.

Ответ 4

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

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

`

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

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

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

`

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

Ответ 5

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

type="text/javacsript"

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

Ответ 6

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

Поместите все ваши сценарии, определенные в вашем представлении, в разделе "Скрипты" представления. Таким образом, вы можете загрузить основную компоновку после загрузки всех других скриптов. Это настройка по умолчанию при запуске нового веб-проекта 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>
}

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

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

Ответ 7

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

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

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

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

Ответ 8

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

http://docs.jquery.com/Using_jQuery_with_Other_Libraries

Ответ 9

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

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

var $j = jQuery.noConflict();

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

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

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

Ответ 10

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

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

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

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

Ответ 11

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

Ответ 12

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

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

Ответ 13

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

<script>
$=jQuery;
</script>

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

Ответ 14

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

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

Ответ 15

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

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

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

Ответ 16

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

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

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

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

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

Ответ 17

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

Ответ 18

Просто разместите 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>

Ответ 19

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

Энтони

Ответ 20

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

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

  • щелкните правой кнопкой мыши папку
  • вкладка "Разрешения"
  • установите доступ к папке:  OWNER: создание и удаление файлов  GROUP: файлы доступа  ДРУГИЕ: доступ к файлам

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

Ответ 21

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

Ответ 22

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

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

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

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

Ответ 23

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

Ответ 24

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

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

Ответ 25

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

Ответ 26

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

Ответ 27

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

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

Ответ 28

У меня такая же проблема, и ни один случай не разрешает мне проблему. Единственное, что работает для меня, оно накладывается на файл 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= "<% = ResolveUrl (" ")... загрузка jQuery в страницах содержимого верна.

Ответ 29

  • Проверьте, что в вашем файле jquery указан точный путь.

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

, если вы добавите это в нижней части своей страницы, пожалуйста, все вызовите функцию JS ниже этого объявления.

  1. Проверьте этот тест кода,

    <script type="text/javascript">
    /***
     * Created by dadenew
     * Submit email subscription using ajax
     * Send email address
     * Send controller
     * Recive response
     */
    $(document).ready(function() { //you can replace $ with Jquery
    
      alert( 'jquery working~!' );
    });
    

Мир!

Ответ 30

У меня была очень похожая проблема. В моем приложении С# MVC JQuery не распознавался. Мне нужно было перенести @Scripts.Render( "~/bundles/jquery" ) со дна моего файла _Layout.cshtml в начало раздела. Также убедитесь, что вы захватили Jquery как пакет Nuget, если вы используете визуальную студию!

<head>
    @Scripts.Render("~/bundles/jquery")
</head>