繁体   English   中英

JQuery - $ 未定义

[英]JQuery - $ is not defined

我有一个简单的 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 应用程序,我确定我真的很密集,谷歌上到处都说要检查文件是否正确引用,我已经检查并再次检查,请告知::/

该错误只能由以下三件事之一引起:

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

首先,确保正确调用什么脚本,它应该看起来像

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

并且不应该有属性asyncdefer

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

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

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

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

最后要检查的一件事是确保在加载 jQuery之前没有加载任何插件。 插件扩展了“$”对象,因此如果您在加载 jQuery 核心之前加载插件,那么您将收到您描述的错误。

注意:如果您正在加载不需要 jQuery 运行的代码,则不需要将其放置在 jQuery 就绪处理程序中。 该代码可以使用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>

这可能在 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
});

请注意,很多时候$(document).ready(function(){//code here}); 不管用。

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

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

`

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

如果你使用它:

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

`

$目前尚未定义,因为它在 jQuery 加载之前被调用,并且您的脚本将在控制台的第一行失败。

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

type="text/javacsript"

所以他们正在加载,但没有进一步暗示它为什么不起作用。 不用说,正确的拼写修复了它。

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

将视图中定义的所有脚本放在视图的脚本部分中。 这样,您可以在加载所有其他脚本后让主布局加载。 这是启动新的 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 库尚未加载。

您可以在拉取 jQuery 库后移动您的代码。

或者你可以使用这样的东西

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

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

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

var $j = jQuery.noConflict();

然后在任何地方使用它

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

更多细节可以在这里找到

确保你真的加载 jquery 这不是jquery - 它是 ui!

  <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

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

<script>
$=jQuery;
</script>

它工作得很好:)

我遇到了同样的问题并通过使用解决了它

document.addEventListener('DOMContentLoaded', () => {
 // code here
});

听起来 jQuery 没有正确加载。 您使用的是哪个源/版本?

或者,它可能是命名空间冲突,因此请尝试显式使用 jQuery 而不是使用$ 如果可行,您可能希望使用noConflict来确保使用$的其他代码不会中断。

当我拼错 jQuery 参考时,我得到了同样的错误消息,而不是type="text/javascript"我输入了 "...javascirpt"。 ;)

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

我使用Url.Content并且从来没有问题。

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

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

为了避免这种情况 -

许多 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.js 的引用不在标签中。 一旦我切换它,一切都开始工作了。

安东尼

  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. 包括主 Jquery 库
  2. 检查跨浏览器问题
  3. 在 jquery 代码的顶部添加库
  4. 检查 CDN 可能被阻止。

此博客中提供了完整的详细信息, 请单击此处

我曾经无缘无故地遇到过这个问题。 当我通过 aspnet 开发服务器运行时,它在本地发生。 它一直在工作,我将所有内容恢复到以前工作的状态,但仍然无法正常工作。 我查看了 chrome 调试器,jquery-1.7.1.min.js 已经加载,没有任何问题。 这一切都非常令人困惑。 我仍然不知道问题是什么,但关闭浏览器,关闭开发服务器,然后再次尝试将其整理出来。

在 asp.net 中使用 jQuery 时,如果您正在使用母版页并且正在那里加载 jquery 源文件,请确保在所有 jquery 脚本引用之后都有标头 contentplaceholder。

我有一个问题,任何使用该母版页的页面都会返回“$ 未定义”,这仅仅是因为不正确的顺序使客户端代码在创建 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 托管的 JQuery。 它被正确包含,但我在一个 HTTPS 页面上并通过 HTTP 调用它。 一旦我解决了问题(或允许不安全的内容),它就会立即启动。

在这里尝试了一切都没有结果后,我只需将脚本 src 标签从正文移动到头部即可解决问题

我遇到了同样的问题,无法弄清楚是什么原因造成的。 我最近将我的 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 文档中进行相应处理。 希望这可以帮助。

我有同样的问题,没有案例可以解决我的问题。 唯一对我有用的是,它放在 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 负载是正确的。

我有一个非常相似的问题。 在我的 C# MVC 应用程序中,无法识别 JQuery。 我需要将 @Scripts.Render("~/bundles/jquery") 从我的 _Layout.cshtml 文件的底部移动到该部分的头部。 如果您使用的是 Visual Studio,还请确保您已将 Jquery 作为 Nuget 包获取!

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

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

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

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

我有一个简单的jquery click事件

<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应用程序,我确定我真的很密集,谷歌上的每个地方都说要检查文件是否被正确引用,我已经检查过并再次检查过,请告知! :/

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM