当前位置:  开发笔记 > 编程语言 > 正文

JQuery - $未定义

如何解决《JQuery-$未定义》经验,为你挑选了10个好方法。

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


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


我已经检查过脚本是否正确解析,我能够看到标记并直接在firebug中查看脚本,所以我必须被找到.但是,我仍然得到:

$未定义

并没有jquery工作.我也尝试了各种各样的变体,如$(document).ready和jQuery等.

它是.net 3.5上的一个MVC 2应用程序,我确定我真的很密集,google上的每个地方都说要检查文件是否正确引用,我已经检查并再次检查,请指教!:/



1> Mike Trpcic..:

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

    您的JavaScript文件未正确加载到您的页面中

    你有一个拙劣的jQuery版本.这可能是因为有人编辑了核心文件,或者插件可能覆盖了$变量.

    您在页面完全加载之前运行JavaScript,因此,在jQuery完全加载之前.

您应该检查Firebug 网络面板以查看文件是否实际正确加载.如果没有,它将突出显示为红色并在其旁边显示"404".如果文件正确加载,则表示问题为2.

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

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

这将确保在初始化jQuery 之后加载代码.

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

注意:如果您正在加载不需要运行jQuery的代码,则不需要将其放在jQuery ready处理程序中.该代码可以使用分开document.readyState.


关于你的代码块,除非你在该语句之前有一个包含jQuery的脚本标记,否则`$(document)`将不起作用...
(function($){})(jQuery);
我想补充一点,我有与OP相同的问题,我的问题是使用https和jquery的库不能很好地工作.
@Patrik:在视图中使用脚本部分查看我的答案.这样就可以先加载jquery,并正确定义$.

2> 小智..:

可能是在调用jquery脚本之前调用了脚本标记.




结果是$未定义

将jquery.js放在脚本标记之前它会起作用;)像这样:






3> Andrew Kille..:

首先,您需要确保加载jQuery脚本.这可能来自您的网站上的CDN或本地.如果在尝试使用jQuery之前没有先加载它,它会告诉你jQuery没有定义.


这可以在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}); 不管用.



4> 小智..:

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

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

`

因此,只有在窗口加载后,当所有资产都已加载时,您的代码才会运行.在这一点上,$将定义jQuery().

如果你使用它:

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

`

$还没有在这个时候确定的,因为jQuery是加载之前它被称为,你的脚本将失败上的控制台,第一道防线.



5> George R..:

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

type="text/javacsript"

所以他们正在加载,但没有进一步暗示为什么它不起作用.毋庸置疑,正确的拼写修正了它.



6> angularsen..:

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

将视图中定义的所有脚本放在视图的"脚本"部分中.这样,您可以在加载所有其他脚本后加载主布局.这是启动新MVC5 Web项目时的默认设置.对早期版本不确定.

查看/美孚/ 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.
    

    
}

查看/共享/ _Layout.cshtml



    

    @Scripts.Render("~/bundles/jquery")
    @Scripts.Render("~/bundles/bootstrap")
    @RenderSection("scripts", required: false)


请注意脚本部分如何在主布局文件中最后呈现.


注意:部分视图不支持视图部分.

7> Wolfgang Fah..:

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

  

这是jquery的正确脚本源:

 



8> Naveed Abbas..:

如上所述,它发生的原因是$ variable的冲突.

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

var $j = jQuery.noConflict();

然后在任何地方使用它

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

更多细节可以在这里找到



9> Nesar..:

这意味着您的jQuery库尚未加载.

您可以在拉动jQuery库后移动代码.

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

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



10> tambler..:

您使用的是其他任何JavaScript库吗?如果是这样,您可能需要在兼容模式下使用jQuery:

http://docs.jquery.com/Using_jQuery_with_Other_Libraries

推荐阅读
小色米虫_524
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有