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



у меня есть простой jQuery click event



<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 не работает. Я также пробовал различные варианты этого, как $(документ.)готов и jQuery и др.



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

496   30  

30 ответов:

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

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

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

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

$(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
});

'

the $ еще не определен в это время, потому что он называется перед загрузкой 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>
}

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>

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

убедитесь, что вы действительно загружаете 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():

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

Энтони

эта ошибка означает, что 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 загрузился без каких-либо проблем. Все это было очень запутанно. Я все еще не знаю, в чем проблема, но закрываю браузер, закрываю сервер разработки, а затем пытаюсь снова разобрались.

просто поместите 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>

оказывается, моя проблема была довольно глупой - я поставил <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 и т. д.), а также и обратился соответственно в 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="

Comments

    Ничего не найдено.