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

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

440 голосов
/ 03 февраля 2010

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

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

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

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

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

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

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

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

Ответы [ 31 ]

4 голосов
/ 12 сентября 2012

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

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

4 голосов
/ 03 августа 2010

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

4 голосов
/ 27 сентября 2013

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

<script>
$=jQuery;
</script>

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

3 голосов
/ 28 августа 2016

Эта ошибка означает, что 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 для более подробной информации о шаблоне декоратора.

2 голосов
/ 22 марта 2012

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

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

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

2 голосов
/ 03 февраля 2010

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

<script src="<%= Url.Content ("~/Scripts/jquery-1.4.1.min.js") %>" type="text/javascript"></script>
1 голос
/ 20 января 2012

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

1 голос
/ 17 декабря 2014
  1. Проверьте, включен ли точный путь к вашему файлу 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~!' );
    });
    

Мир!

1 голос
/ 03 июня 2012

Просто поместите 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>
1 голос
/ 23 октября 2012

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

Anthony

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