JQuery - $没有定义

我有一个简单的jquery点击事件

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

以及在site.master中定义的jquery引用

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

我已经检查了脚本被正确解析,我能够看到标记,并直接在firebug中查看脚本,所以我必须被发现。然而,我仍然得到:

$没有定义

jquery没有一个是有效的。我也尝试过这种方法的各种变体,如$(document).ready和jQuery等。

这是一个。net 3.5上的MVC 2应用程序,我确信我真的很密集,谷歌上的所有地方都说要检查文件是否被正确引用,我已经检查了一遍又一遍,请建议!: /

2093140 次浏览

是否使用其他JavaScript库?如果是这样,你可能需要在兼容模式下使用jQuery:

http://docs.jquery.com/Using_jQuery_with_Other_Libraries

我使用Url。内容,从来没有遇到过问题。

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

这种错误只能由以下三种情况之一引起:

  1. 您的JavaScript文件没有正确地加载到页面中
  2. 你有一个拙劣的jQuery版本。这可能是因为有人编辑了核心文件,或者插件覆盖了$变量。
  3. 在页面完全加载之前就已经运行了JavaScript,因此,在jQuery完全加载之前就已经运行了JavaScript。

首先,确保正确调用了什么脚本,它应该是这样的

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

并且不应该有异步推迟属性。

然后您应该检查Firebug 面板,以查看文件是否正在正确加载。如果没有,它将被突出显示为红色,并在旁边显示“404”。如果文件加载正常,则意味着问题是2。

确保所有jQuery javascript代码都在代码块中运行,例如:

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

这将确保您的代码正在加载 jQuery已初始化。

最后要检查的一件事是确保你加载jQuery时没有加载任何之前插件。插件扩展了“$”对象,所以如果你在加载jQuery核心之前加载了一个插件,那么你会得到你所描述的错误。

如果你正在加载不需要jQuery运行的代码,它不需要放在jQuery ready处理程序中。代码可以使用document.readyState分隔。

我得到了同样的错误消息,当我拼写错误的jQuery参考,而不是type="text/javascript"我键入“…javascirpt”。;)

我只是做了同样的事情,发现我有很多

type="text/javacsript"

所以他们正在加载,但没有进一步提示为什么它不能工作。不用说,正确的拼写解决了这个问题。

它可能是在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 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>

我曾经莫名其妙地遇到过这个问题。当我运行aspnet开发服务器时,它发生在本地。它一直在工作,我把所有东西都恢复到它以前工作的状态,但它仍然不工作。我在chrome调试器中查看了一下,jquery-1.7.1.min.js加载没有任何问题。这一切都很令人困惑。我仍然不知道问题是什么,但关闭浏览器,关闭开发服务器,然后再次尝试整理。

我们有同样的问题....但是我不小心检查了文件夹属性并设置了一些东西…

你必须检查你正在访问的每个文件夹的属性。

  1. 右键单击文件夹
  2. “权限”选项卡
  3. 设置文件夹访问权限: OWNER:创建和删除文件 GROUP:访问文件 OTHERS:访问文件

我希望这是解决方案......

在解决方案中提到- 最后一件要检查的事情是确保在加载jQuery之前没有加载任何插件。插件扩展了“$”对象,所以如果你在加载jQuery核心之前加载了一个插件,那么你会得到你所描述的错误。" < / p >

为了避免这种情况

许多JavaScript库使用$作为函数或变量名,就像jQuery一样。在jQuery的例子中,$只是jQuery的别名,所以所有的功能都可以使用,而不需要使用$。如果我们需要在jQuery旁边使用另一个JavaScript库,我们可以通过调用$.noConflict()将$的控制权返回给另一个库:

只需把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>

jQuery似乎无法正常加载。您使用的是哪个源/版本?

或者,它可能是名称空间冲突,所以尝试显式使用jQuery而不是使用$。如果有效,您可能喜欢使用noConflict来确保使用$的其他代码不会崩溃。

我也遇到了同样的问题,这是因为我对jQuery.js的引用不在标签中。一旦我把它换了,一切都开始运转了。

安东尼

当在asp.net中使用jQuery时,如果你正在使用一个母版页,并且你正在加载jQuery源文件,请确保在所有jQuery脚本引用之后有头部内容占位符。

我有一个问题,任何使用该母版页的页面都会返回“$ is not defined”,仅仅是因为错误的顺序使客户端代码在jquery对象创建之前运行。所以确保你有:

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

这样代码将按顺序运行,并且您将能够在子页面上运行jQuery代码。

在我的情况下,我指向谷歌托管JQuery。它被正确地包含在内,但我在一个HTTPS页面上,并通过HTTP调用它。一旦我修复了这个问题(或允许不安全的内容),它就立即启动了。

在这里尝试了所有方法都没有结果之后,我简单地通过将脚本src标记从主体移动到头部来解决了这个问题

经过一些测试,我找到了一个快速的解决方案, 你可以在你的索引页顶部添加:

<script>
$=jQuery;
</script>

它工作得很好:)

在视图和主布局中使用脚本部分

将视图中定义的所有脚本放在视图的scripts部分中。通过这种方式,您可以让主布局在所有其他脚本加载后加载此脚本。这是启动一个新的MVC5 web项目时的默认设置。不确定早期版本。

视图/ 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脚本。这可能来自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
});

请注意,很多时候$(文档)时(函数(){/ /代码});将不起作用。

我也有同样的问题,但不知道是什么原因导致的。我最近将HTML文件从日语转换为UTF-8,但我没有对脚本文件做任何处理。不知何故,jquery-1.10.2.min.js在这个过程中被损坏了(我仍然不知道是怎么回事)。用原来的替换jquery-1.10.2.min.js修复了它。

如果你把你的jquery.js文件放在html文件所在的同一个文件夹下,或者在一些子文件夹中,Firebug的问题就解决了。例如,如果你的html文件在C:/folder1/下,那么你的js文件应该在C:/folder1/(或C:/folder1/folder2等)下的某个地方,并在html文档中相应地定位。希望这能有所帮助。

如果jQuery插件调用在</body>的旁边,并且你的脚本在此之前加载,你应该让你的代码在window.onload事件之后运行,如下所示:

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

因此,您的代码将只在窗口加载后运行,此时所有资产都已加载。此时,将定义jQuery ($)。

如果你使用它:

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

$现在还没有定义,因为它是在jQuery加载之前调用的,你的脚本在控制台的第一行就会失败。

你只要在你的页面开始添加

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

和检查你的SRC链接在任何浏览器地址栏,如果你得到一些代码,那么这将为你工作。 阿西夫< / p >

我也有同样的问题,没有案例能解决我的问题。唯一对我有用的,就是把它放在网站上。主文件,下一个:

<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的加载是正确的。

  1. 检查jquery文件的确切路径是否包含在内。

    # EYZ0 < / p >

如果你在你的页面底部添加这个,请在这个声明下面调用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~!' );
    });
    

    < / p >

和平!

我也遇到过类似的问题。在我的c# MVC应用程序中,JQuery没有被识别出来。我需要移动@Scripts.Render("~/bundles/jquery")从底部的我的_Layout。CSHTML文件到section的头。另外,如果你正在使用visual studio,请确保你已经将Jquery作为Nuget包!

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

如上所述,它的发生是由于$变量的冲突。

我通过为jQuery保留一个没有冲突的次要变量来解决这个问题。

var $j = jQuery.noConflict();

然后在任何地方使用它

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

更多详情请见在这里

有一种方法可以让它在其余代码运行之前自动加载javascript。

进入Views\Shared_Layout.html并添加以下内容

<head>
<*@ Omitted code*@>
<script src="~/Scripts/jquery-1.10.2.min.js" type="text/javascript"></script>
</head>

确保你真的加载jquery 这是 jquery -这是ui!< / p >

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

这意味着您的jQuery库还没有加载。

您可以在拖动jQuery库后移动代码。

或者你可以用这样的东西

window.onload = function(){
// Your code here
// $(".some-class").html("some html");
};

这个错误意味着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

# EYZ2

未定义Uncaught ReferenceError: $

# EYZ2

这是解决这个问题的常见问题,你必须检查一些点

  1. 包含主要Jquery库
  2. 检查跨浏览器问题
  3. 添加库顶部的jquery代码
  4. 检查cdn可能被阻止。

完整细节在这个博客点击这里中给出

我在这里没有发现,但确实发生在我身上。请确保您没有包含jQuery 苗条的版本,因为该版本的jQuery库不包括Ajax功能。

结果是“$”可以工作,但是$。例如,Get将返回一个错误消息,说明该函数未定义。

解决方案:包含完整版的jQuery。

我有同样的问题,并解决了它使用

document.addEventListener('DOMContentLoaded', () => {
// code here
});
我也遇到过同样的问题,通过以下步骤解决。 脚本的顺序应该如下所述

    <script src="~/Scripts/jquery-3.3.1.min.js"></script>
<script src="~/Scripts/jquery-ui.js"></script>
<script src="~/Scripts/bootstrap.min.js"></script>

这个序列对我的代码不正确,我按照上面的方法纠正了这一点,它解决了我的Jquery未定义的问题。

我也有同样的问题,现在我已经解决了。我的环境如下所示;

Laravel与刀片页。我有一个主布局,并使用部分创建新的页面从我的主页面布局(模板)。

我从我的section页面加载JQuery,而不是我的主布局。我把它从section页面改为从主布局和头部标签的顶部加载JQuery。