关于javascript:JQuery – $未定义 | 码农家园
JQuery - $ is not defined
我有一个简单的jquery点击事件
1 2 3 4 5 6
< script type= "text/javascript" >
$( function ( ) {
$( '#post' ) .click ( function ( ) {
alert( "test" ) ;
} ) ;
} ) ;
以及在site.master中定义的jquery引用
1
< script src= "<%=ResolveUrl(" ~/ Scripts/ jquery- 1.3.2.js ")%>" type= "text/javascript" >
我已经检查了脚本是否被正确解析,我能够在Firebug中看到标记并直接查看脚本,所以必须找到我。但是,我仍然得到:
$ is not defined
而且jquery都不起作用。我还尝试过这方面的各种变体,比如$(document).ready和jquery等。
这是一个在.NET 3.5上的MVC 2应用程序,我确信我真的很密集,谷歌上的每一个地方都说要检查文件是否被正确引用,我已经检查过了,请告知!:
如果使用fiddler工具检查页面加载,您是否看到jquery-1.3.2.js请求并加载了http200响应代码?
您的脚本是否在jquery之前执行?
你能查看源代码并点击JS链接吗?似乎您的jquery未加载到页面上。尝试firebug控制台屏幕查看错误,也可以尝试脚本标记中的ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js。
我更喜欢使用Firebug或类似的工具来检查jquery.js是否被下载。检查是否有404。
是否在加载jquery源之前触发脚本?
@苏里亚/戴夫,我现在已经回家了,所以明天我会再检查一遍,然后回来发帖,但我认为这可能是个问题,:/多么尴尬!
发布一个链接到实际页面…最快的方法。
恐怕只有内部网。
请提供有关源代码的详细信息。未知数太多,无法提供正确答案!
请注意,当我们应用安全证书(https)时,jquery无法加载,因为我们正在使用aspnetcdn加载它,而不是从我们的站点加载它。我知道这不是这种情况的答案,但我发现这个问题是在寻找我们问题的答案。谷歌搜索:https jquery未定义stackoverflow.com
该错误只能由以下三种情况之一造成:
您的javascript文件未正确加载到页面中
您有一个错误的jquery版本。这可能是因为有人编辑了核心文件,或者插件可能覆盖了$variable。
在页面完全加载之前,以及在jquery完全加载之前,您已经运行了javascript。
您应该检查Firebug网络面板,看看文件是否被正确加载。如果没有,它将突出显示为红色,并在旁边显示"404"。如果文件加载正确,这意味着问题是2号。
确保所有jquery javascript代码都在代码块内运行,例如:
1 2 3
$( document) .ready ( function ( ) {
//your code here
} ) ;
这将确保在初始化jquery之后加载代码。
最后要检查的一件事是,在加载jquery之前,确保没有加载任何插件。插件扩展了"$"对象,因此,如果在加载jquery核心之前加载插件,那么您将得到所描述的错误。
注意:如果您加载的代码不需要运行jquery,则不需要将其放在jquery就绪处理程序中。该代码可以使用document.readyState 分隔。
看看你的密码块,$(document)
我想补充的是,我有同样的问题作为作品,我的问题是,使用HTTPS和JQuery的图书馆没有那么好的工作。
(function($){)})(jquery);
@Patrik:see my answer for a solution using a scripts section in the view.这个方法,我会先装载,然后预先确定。
Related to Point 1.有时候清除浏览器缓存帮助,因为浏览器会忽略变更,如果一个坏的JQuery文件被缓存。
错误也可以由四个因素造成。你有jquery settup in compatibility mode.在wordpress jquery is loaded this way by default.
如果你在剧本上有异常,那么检查一下我的问题是什么。
惊讶的是,没有提到JQUERY文件可能是装载预先准备好的,但在内线代码被重新装入之后,见其他答案……
可能是在调用jquery脚本之前调用了脚本标记。
1 2 3
< script type= "text/javascript" src= "js/script.js" >
< script src= "http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type= "text/javascript" >
未定义结果为$
将jquery.js放在脚本标记之前,它将工作;)如下所示:
1 2 3
< script src= "http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type= "text/javascript" >
< script type= "text/javascript" src= "js/script.js" >
这是一个伟大的反应。我尝试它,它为我工作。我用VS 2013和ASP.Net。你知道我如何在页面装载自动在ASP.Net之前使Javascript负载吗?还是我必须在所有文件中以这种方式引用Javascript?
添加到你的答案。在ASP.Net你可以共享 layout.cshtml
@Pat并确保你在@section Scripts 中写下你的代码
请更新回答使用HTTPS和考虑使用SPI devdocs.io/html/属性
首先,您需要确保jquery脚本已加载。这可能来自cdn或您网站上的本地。如果在尝试使用jquery之前没有先加载这个,它会告诉您jquery没有定义。
1
< script src= "jquery.min.js" >
这可能在页面的头部或底部,只需确保在调用任何其他jquery内容之前加载它。
然后你需要使用下面两个解决方案中的一个
1 2 3 4 5
( 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) ;
或
1 2 3 4
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 is not defined."它是在页面负载后存在的。
不确定这是一个问题还是一个说法,但在你尝试使用之前,我想请你给JQuery Script打电话。它听起来像你在脚上装载的东西,在书页上呼唤的东西。
对不起,我想这是一种技巧,你可以用任何顺序的脚本。是的,我是用这个在MVC的身体部分。Mycode.js then Jquery.js are the last two things on the page.
别担心,保罗,我已经编辑了一个解决方案负荷第一注:
这个问题是"我的脚本是按正确的顺序排列的,但脚本是按不同的顺序装载的"。我记得四年前我做过类似的事但我记不起有什么问题
这是对的,你必须基本负载JQuery"之前"任何想要使用它的内容,包括在负载之后运行的任何内线脚本。At the bottom would allow content to load slightly more quickly,ref:stackoverflow.com/questions/1860482/&hellip;)周围的工作是只为内线脚本使用香草Javascript,但自从你有两条代码路径,一条可以使用JQuery,一条不能使用。
如果jquery插件调用位于
旁边,并且在此之前加载了脚本,则应使代码在window.onload 事件之后运行,如下所示:
1 2 3
window.onload = function ( ) {
//YOUR JQUERY CODE
}
`
因此,只有在窗口加载之后,当所有资产都已加载时,代码才会运行。在这一点上,将定义jquery($ )。
如果您使用它:
1 2 3
$( document) .ready ( function ( ) {
//YOUR JQUERY CODE
} ) ;
`
此时还没有定义$ ,因为它是在jquery加载之前调用的,您的脚本将在控制台的第一行失败。
一般来说,一个坏的想法,把它打开。这将是唯一一次运行!!
注意:记住您只能分配一个window.onload函数,如果您分配另一个函数,则不会执行上一个函数。
请使用devdocs.io/dom/document/readystate
在页面加载中调用方法不是一个好主意
我做了同样的事情,发现我有很多
所以他们正在加载,但没有进一步的提示为什么它不能工作。不用说,正确的拼写可以解决这个问题。
Moderator note:The typo in this post is deliberate,to indicate a point.请不要编辑邮件到"正确"这个。
使用视图和主布局中的脚本部分。
将视图中定义的所有脚本放在视图的脚本部分中。这样,您就可以在加载所有其他脚本之后让主布局加载这个脚本。这是启动新MVC5 Web项目时的默认设置。不确定早期版本。
视图/foo/myview.cshtml:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
// 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 type= "text/javascript" >
$( document) .ready ( function ( ) {
// Do your custom javascript for this view here. Will be run after
// loading all the other scripts.
} ) ;
}
视图/共享/u layout.cshtml
1 2 3 4 5 6 7 8 9
< html>
< body>
<!-- ... Rest of your layout file here ... -->
@ Scripts.Render ( "~/bundles/jquery" )
@ Scripts.Render ( "~/bundles/bootstrap" )
@ RenderSection( "scripts" , required: false )
</ body>
</ html>
注意脚本部分如何最后在主布局文件中呈现。
注:视图部分视图不受设计支持。
这是我必须为我的儿子做的……而且我应该更好地了解在第一个地方使用@scripts,但是忘记它直到我寻找一个fix。
谢谢你,安格拉森,我今天学了一些新东西。
确保确实加载了jquery这不是jquery-它是用户界面!
1 2
< script language= "JavaScript"
src= "http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.0/jquery-ui.min.js" >
这是jquery的正确脚本源:
1
< script language= "JavaScript" src= "http://ajax.googleapis.com/ajax/libs/jquery/1.10.0/jquery.min.js" >
如上所述,它是由于$variable的冲突而发生的。
我通过为jquery保留一个没有冲突的辅助变量来解决这个问题。
1
var $j = jQuery.noConflict ( ) ;
然后在任何地方使用它
更多详细信息可在此处找到
您是否在使用其他的javascript库?如果是这样,您可能需要在兼容模式下使用jquery:
http://docs.jquery.com/将"jquery"与"其他"库一起使用
这意味着您的jquery库尚未加载。
您可以在拉出jquery库后移动代码。
或者你可以用这样的东西
1 2 3
window.onload = function ( ) {
// Your code here
} ;
这会在加载了DOM之后触发,但不会在加载了控件、javascript和其他后台运行的程序时触发。这项工作需要一个时间延迟。
帮我修正了错误谢谢
当我拼错jquery引用而不是type="text/javascript" 时,我收到了相同的错误消息,我键入了"…javascirpt"。;)
尤里卡!我有我自己的名字。谢谢你拯救我的清醒!
我很好,并且有浪费了30分钟
听起来jquery没有正确加载。您使用的是哪个源/版本?
或者,它可能是名称空间冲突,因此尝试显式使用jquery,而不是使用$ 。如果可以,您可以使用noConflict 来确保使用$ 的其他代码不会中断。
经过一些测试,我找到了一个快速的解决方案,您可以在索引页顶部添加:
它工作得很好:)
The question was:$is not defined,no?
这是一个很好的黑客
Uncaught referenceerror:jquery is not defined
你把它放在JQuery图书馆进出口公司的下面吗?
该错误意味着jquery尚未加载到页面上。使用$(document).ready(...) 或其任何变体都没有好处,因为$ 是jquery函数。
使用window.onload 应该在这里起作用。注意,只有一个函数可以分配给window.onload 。为了避免丢失原始的onload逻辑,可以这样修饰原始函数:
1 2 3 4 5 6 7
originalOnload = window.onload ;
window.onload = function ( ) {
if ( originalOnload) {
originalOnload( ) ;
}
// YOUR JQUERY
} ;
这将执行最初分配给window.onload 的函数,然后执行// YOUR JQUERY 。
请参阅https://en.wikipedia.org/wiki/decorator_pattern了解有关decorator模式的更多详细信息。
在解决方案中提到-"最后要检查的一件事是,在加载jquery之前,确保没有加载任何插件。插件扩展了"$"对象,因此,如果在加载jquery核心之前加载插件,那么您将得到所描述的错误。
为了避免这个-
许多JavaScript库使用$作为函数或变量名,就像jQuery那样。在jquery的情况下,$只是jquery的别名,因此所有功能都不使用$。如果我们需要在jquery旁边使用另一个javascript库,我们可以通过调用$.noconflict()将$back的控件返回给另一个库:
我使用url.content,而且从来没有问题。
1
< script src= "<%= Url.Content (" ~/ Scripts/ jquery- 1.4.1.min .js ") %>" type= "text/javascript" >
检查jquery文件的确切路径。
如果您在页面底部添加了这个,请在声明下面调用JS函数。
使用此代码测试进行检查,
1 2 3 4 5 6 7 8 9 10 11 12
< 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~!' ) ;
} ) ;
和平!
我有过一次这个问题,没有明显的原因。当我通过aspnet开发服务器运行时,它在本地发生。它一直在工作,我把一切都恢复到以前工作的状态,但仍然不工作。我查看了chrome调试器,jquery-1.7.1.min.js加载时没有出现任何问题。一切都很混乱。我仍然不知道问题出在哪里,只是关闭了浏览器,关闭了开发服务器,然后再次尝试解决问题。
只需将jquery url放在jquery代码的顶部
像这样--
1 2 3 4 5 6 7 8
< script src= "<%=ResolveUrl(" ~/ Scripts/ jquery- 1.3.2.js ")%>" type= "text/javascript" >
< script type= "text/javascript" >
$( function ( ) {
$( '#post' ) .click ( function ( ) {
alert( "test" ) ;
} ) ;
} ) ;
我有同样的问题,因为我对jquery.js的引用不在标记中。一旦我换了那个,一切都开始工作了。
安东尼
我有同样的问题,没有任何案例能解决我的问题。唯一对我有用的是,它放在site.master文件的下面:
1 2
< script src= "<%= ResolveUrl(" ~/ Scripts/ jquery- 1.7.1.min .js ") %>" type= "text/javascript" >
< script src= "<%= ResolveUrl(" ~/ Scripts/ bootstrap/ js/ bootstrap.min .js ") %>" type= "text/javascript" >
使用src="<%=resolveurl(")…内容页中jquery的加载是正确的。
我也遇到了同样的问题,不知道是什么引起的。我最近将HTML文件从日语转换为UTF-8,但我对脚本文件没有做任何处理。不知为什么jquery-1.10.2.min.js在这个过程中被破坏了(我仍然不知道怎么做)。将jquery-1.10.2.min.js替换为原来的修复版本。
在ASP.NET中使用jquery时,如果使用的是母版页,并且要在其中加载jquery源文件,请确保在所有jquery脚本引用之后都有头ContentPlaceholder。
我遇到了一个问题,任何使用该母版页的页面都会返回"$is not defined",这仅仅是因为错误的顺序使客户端代码在jquery对象创建之前运行。因此,请确保您有:
1 2 3 4
< head runat= "server" >
< script type= "text/javascript" src= "Scripts/jquery-VERSION#.js" >
</ asp: ContentPlaceHolder>
</ head>
这样,代码将按顺序运行,并且您将能够在子页面上运行jquery代码。
在我的例子中,我指的是Google托管的jquery。它被正确地包含,但是我在一个HTTPS页面上,并通过HTTP调用它。一旦我解决了问题(或者允许不安全的内容),它就会立即启动。
我有一个非常相似的问题。在我的C_MVC应用程序中,没有识别jQuery。我需要将@scripts.render("~/bundles/jquery")从layout.cshtml文件的底部移动到节的头部。如果您使用的是Visual Studio,请确保您已将jquery作为nuget包获取!
1 2 3
< head>
@ Scripts.Render ( "~/bundles/jquery" )
</ head>
有一种方法可以让它在其余代码运行之前自动加载javascript。
进入viewssharedu layout.html并添加以下内容
1 2 3 4
< head>
<*@ Omitted code*@>
< script src= "~/Scripts/jquery-1.10.2.min.js" type= "text/javascript" >
</ head>
如果您将jquery.js文件定位在同一文件夹下或HTML文件所在的某些子文件夹中,那么Firebug问题就会得到解决。例如,如果您的HTML在C:/folder1/下,那么您的JS文件应该在C:/folder1/(或C:/folder1/folder2等)下,并在HTML文档中相应地进行寻址。希望这有帮助。
如果script 标记具有defer 属性,则显示错误。
Uncaught ReferenceError: $ is not defined
必须从script 标记中删除属性defer 。
我们有同样的问题……但我意外地检查了文件夹属性并设置了一些…
您必须检查正在访问的每个文件夹的属性。
右键单击文件夹
"权限"选项卡
设置文件夹访问权限:所有者:创建和删除文件组:访问文件其他:访问文件
我希望这就是解决办法……
在尝试了这里的所有操作之后,没有任何结果,我只是通过将script src标记从body移到head来解决了这个问题。
这不是回答这个问题的答案。请不要用无助的答案来回答垃圾邮件。如果你相信你的经验可以帮助其他人,她会把它当作一个短暂的方法,或者提供一个完整的答案。
你只需在页面开头添加
1
< script src= "http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type= "text/javascript" >
并在任何浏览器地址栏中检查您的SRC链接,如果您得到了一些代码,这将对您有效。阿西