キャッチされていないReferenceError:$は定義されていませんか?


658

なぜこのコードは

キャッチされていないReferenceError:$が定義されていません

以前は大丈夫だったの?

$(document).ready(function() {
    $('#tabs > ul').tabs({ fx: { opacity: 'toggle' } });
    $('#featuredvid > ul').tabs();
});

タブの結果が閉じなくなりました。

jQueryはヘッダーで参照されます。

<script language="JavaScript" type="text/javascript" src="<?php echo get_option('siteurl') ?>/js/sprinkle.js"></script>
<script language="JavaScript" type="text/javascript" src="<?php echo get_option('siteurl') ?>/js/jquery-1.2.6.min.js"></script>
<script language="JavaScript" type="text/javascript" src="<?php echo get_option('siteurl') ?>/js/jquery-ui-personalized-1.5.2.packed.js"></script>

<script language = "JavaScript" type = "text / javascript" src = "<?php echo get_option( 'siteurl')?> / js / jquery-1.2.6.min.js"> </ script>これを実行しますトップ
キャプテン

私の場合、JQueryはフッターセクションにあったため、JS関数が最初に呼び出されました。
Daniel Beltrami、

これはあなたの質問に答えますか?ReferenceError:$は定義されていません
Brynn

回答:


688

jqueryスクリプトへの参照を最初に置く必要があります。

<script language="JavaScript" type="text/javascript" src="/js/jquery-1.2.6.min.js"></script>
<script language="JavaScript" type="text/javascript" src="/js/jquery-ui-personalized-1.5.2.packed.js"></script>
<script language="JavaScript" type="text/javascript" src="/js/sprinkle.js"></script>

27
これが明確であることを確認するために、jqueryスクリプト自体の前にjquery-uiへのスクリプト参照を置くことはできません。それが私に問題を修正したものです:最初にjquery-xxxmin.js、次にjquery-ui-xxxxxx.js。
Wagner da Silva、

26
2年後、まだ答えは「チェックされていません」)この記事では、このエラーが発生するこの1つと4つの一般的なケースについて説明します。
ウズベクホン2013

2
@Uzbekjonそれは私のためにそれを解決しました。スクリプトへのパスが私のファイルの1つで間違っていましたHTML
Adam Jensen、

@ジェレミー、どうもありがとう。また、パーシャルのすべてのスクリプトで使用できるように、パーシャルビュー(mvc)の前に配置します。
Andrew Day

1
@Uzbekjonはほぼ10年になりますが、まだチェックされていません。記事のリンクを提供していただきありがとうございます。

235

jQuery JavaScriptが含まれる前に、ready関数を呼び出しています。最初にjQueryを参照してください。


30
@RamSharma実際、これは正しい答えです。あなたは問題を解決するために他に何も必要としません。
Derek款會功夫2015年

うん。これが私の問題でした。私のjsファイルを参照した後、単にjqueryがありました。ああ!
dogonaroof

私の場合、<script src = "/ js / jquery-1.2.6.min.js" defer> </ script>から
キー遅延を削除する必要がありました

123

これは私のためにそれを解決したものです。もともと私はGoogleに行って、jQueryの推奨スニペットをCDNページにコピーして貼り付けました。

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

スニペットが含まれていませんHTTP:HTTPS:src属性をが、私はそれを変更して、私のブラウザは、Firefoxは、それを必要と:編集:これはだけでなく、GoogleのChromeで私のために働きました

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

その後、うまくいきました。


13
厳密に言うと、Googleのスニペット/例は正しいです。それらのsrc属性はプロトコルを除いたURLであり、ブラウザは呼び出しページのプロトコル(HTTP / HTTPS)を使用する必要があります。paulirish.com/2010/the-protocol-relative-urlを参照してください。これは、ページがSSL経由で提供され、スクリプトが提供されない場合に、混合コンテンツの警告を回避するためのベストプラクティスです。
pwdst 2013

12
ここでよくある問題の1つは、開発中にプロトコル相対URLが使用され、晴れた日にローカルファイルからページをロードしようとした場合です。ブラウザは楽観的にロードfile://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.jsを試み、なぜそれがネットワークコンソールに表示されないのか疑問に思います。
Pieter Ennes、2014

@PieterEnnesに感謝します。これはまさに私に当てはまりました。回答者にも感謝!
jwg 2014

43

jQueryプラグインがブラウザーにロードされる前にカスタムスクリプトがロードされた場合、このタイプの問題が発生する可能性があります。したがって、jQueryプラグインを呼び出した後は、常に独自のJavaScriptまたはjQueryコードを保持してください。これにより、この解決策は次のようになります。

まず、GoogleApisでホストされているjQueryファイル、またはhttp://jquery.com/download/からダウンロードしてサーバーでホストするローカルjQueryファイルへのリンクを追加します。

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

またはjQueryのプラグイン。次に、カスタムスクリプトファイルのリンクまたはコードを入力します。

<script src="js/custom.js" type="text/javascript"></script>

3
If your custom script is loaded before the jQuery plugin is loaded to the browser then this type of problem may occur 完璧な答え..私の場合、スクリプトはフッターにありました
echoashu 2014年

41

私の場合.js、jQueryスクリプトリンクの前にファイルを配置し、jQueryスクリプトリンクの.js後にファイルを配置することで問題が解決しました。

<script src="http://code.jquery.com/jquery-1.10.2.js"></script>
<script src="http://code.jquery.com/ui/1.11.2/jquery-ui.js"></script>
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
<script src="exponential.js"></script>

これを使ってjschartを修正しました。
indofraiser 2017

これで問題が修正され、.js jQueryスクリプトリンクの前にファイルを配置する必要があります。
科学的方法

27

さて、私の問題は異なっていました-それはChromeのドキュメントセキュリティモデルでしたでした。

ここで答えを見ると、私が呼び出す前になんとかjqueryファイルをロードしていないことが明らかでした $(document).ready() etc。関数を。しかし、それらはすべて正しい位置にありました。

私の場合、これは、安全なHTTPS接続を介してコンテンツにアクセスしていたのに対し、ページがGoogleなどからCDNでホストされたデータをダウンロードしようとしたためです。解決策は、ローカルに保存してから直接ではなく、毎回CDN。

編集:これを行うもう1つの方法は、CDNでホストされているすべてのものにhttp://ではなくhttps://としてリンクすることです。そうすると、モデルは不満を示しません。


5
また、プロトコルをリンクから外してもかまいません。コンテキストに応じて適切なプロトコルが選択されます(httpバージョンとhttpsバージョンの両方が存在すると想定)。stackoverflow.com/a/3622615/4332を
Adrian Mouat 2013

うん。これで問題が解決しました。次のようなURLからスクリプトを読み込んでいました ´// cdnjs.cloudflare.com / ajax / libs / jquery / 1.12.0 / jquery.min.js´。「cdnjs ...」を使用するとうまく機能します
user9869932

25

スクリプトを開始する前にライブラリを追加します。次のCDNを追加して開始できます。

Google:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>

マイクロソフト

<script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.2.1.min.js"></script>

jquery

他のJquery cdnバージョンが必要な場合は、このリンクを確認してください

この後:

<script type="text/javascript">
$(function(){
    //your stuff
});
or
$(document).ready(function(){
    //your stuff
});    
</script>

ワードプレス:

<script type="text/javascript">
var $ = jQuery;
jQuery(document).ready(function($){
     //your stuff
});
</script>

19

ワードプレスの場合、変更する必要があるかもしれません

$(document).ready(function() {

jQuery(document).ready(function($){

または追加

var $ = jQuery;

$(document).ready(function() {

19

私はまったく同じ問題を抱えていましたが、上記の解決策のどれも役に立ちませんでした。しかし、.cssファイルの後にリンクしただけ.jsで、問題は奇跡的に消えました。お役に立てれば。


13
まず、ページレンダリングのパフォーマンスを向上させるには、JSファイルの前に常にCSSファイルをリンクする必要があります。次に、CSSファイルとJSファイルの順序は、現在の引用には影響しません。
ウズベクホン2013

12
「問題を修正したことで問題が解決することはなく、問題を解決したことを実行してはなりません。」
Andrew

15

スクリプトを非同期にしたかったです。それから私はそれを忘れて、私がライブに行ったとき、[custom] .jsファイルはjQuery.jsの前に50%の時間しかロードしませんでした。

だから私は変わった

<script async src="js/script.js"></script>

<script src="js/script.js"></script>

14

私の場合、スクリプトの呼び出し順序が間違っていたため、このreferenceErrorが発生しました。順序を変更することで解決しました:

<script src="js/index.js"></script>
<script src="js/jquery-1.10.2.js"></script>

<script src="js/jquery-1.10.2.js"></script>
<script src="js/index.js"></script>

1
ほとんどの場合、これは参照エラーが「$」のために発生したとき、私はあまりにも見つかった問題だった
Dipak

9

私も同じ問題を抱えていましたが、コード内にあるすべてのJavaScriptコードの一番上にjQueryを置くことで解決しました。

このようなもの:

<script src="https://code.jquery.com/jquery-3.3.1.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>
<script src="js/app.js" type="text/javascript"></script>
<script src="js/form.js" type="text/javascript"></script>
<script src="js/create.js" type="text/javascript"></script>
<script src="js/tween.js" type="text/javascript"></script>

希望は将来的に誰かを助けることができます。


8

あなたは ready()jQuery JavaScriptが含まれる前関数います。最初にjQueryを参照してください。

ASP.NET MVCを使用している場合は、次のようにして、JSコードをいつレンダリングするかを指定できます。

1は、あなたにpage.cshtmlあなたのラップ<script>部分にタグ、およびそれに名前を付け、使用する一般名は「スクリプト」です。

@section scripts {
    <script>
        // JS code...
    </script>
}

2、_Layout.cshtmlページの追加@RenderSection("Scripts", required: false)で、Jqueryソースを参照した後に必ず追加してください。これにより、JSコードがJqueryよりも後にレンダリングされます。


6

.Netでこれを実行していて、スクリプトファイルが正しく参照されていて、jQueryが正常に見える場合は、ユーザーがスクリプトファイルにアクセスできることを確認してください。私が取り組んでいるプロジェクト(同僚)は、web.configで匿名ユーザーへのアクセスを拒否していました。私が作業していたページは匿名ユーザーがアクセスできるため、スクリプトファイルにアクセスできませんでした。以下をweb.configにドロップし、すべてが正しく実行されました。

  <location path="Scripts">
    <system.web>
      <authorization>
        <allow users="*"/>
      </authorization>
    </system.web>
  </location>

6

私の場合、それはタイプミスでした、私はバックスラッシュを忘れて、ソースを誤って参照していました。

src="/scripts/jquery.js"

後    src="scripts/jquery.js"


5

ソースファイルjquery-1.2.6.min.jsは呼び出されませんjQueryコマンド$()はの前に実行され<..src='jquery-1.2.6.min.js'>ます。

<.. src="/js/jquery-1.2.6.min.js..">最初に実行し、srcパスが正しいことを確認してから、jqueryコマンドを実行してください

$(document).ready(function() 

5

これは以前私に起こりました。

その理由は、JSを使用してAndroidをWebビューに接続しているためです。そして、引用符なしでパラメーターを送信しました。

js.sayHello(hello);

そして私がそれを変更したとき

js.sayHello('hello');

動いた。


引用符のないパラメータが何を意味するのか私にはわかりません...参照エラーがあったようです。
Aluan Haddad

Freemarkerで問題が発生し、その理由は単一引用符がないため、値は文字列ではなく変数として扱われました
torina

4

JavaScriptファイルが見つからないため、このエラーが発生しました。<head>タグ内にJavaScriptファイルを追加するだけです。例を参照してください。

<script src="js/sample.js" type="text/javascript"></script>
<link href="css/sample.css" rel="stylesheet" type="text/css" />

または、次のコードをタグに追加します。

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

4

このエラーは、次の2つのシナリオでも発生します。

  1. @sectionスクリプト要素がHTMLファイルにありません
  2. DOM要素へのアクセス中にエラーが発生しました。たとえば、DOM要素へのアクセスは、$( "。js-toggle")ではなく$( "js-toggle")として記述されています。実際には期間がありません

従うべき3つのこと-必要なスクリプトが追加されていることを確認し、必要な順序で追加されているかどうか、およびJavaスクリプトの3番目の構文エラーを確認します。


うん。ID属性$( '#someDiv')
cagcak

3

どー!タグに混合引用符が含まれているため、jquery参照が壊れていました。Chromeで検査を行ったところ、ファイルが正しくリンクされていないことがわかりました。


3

私の場合、これを含めるのを忘れました:

 <script src ="jquery-2.1.1.js"></script>

以前は、このエラーの原因となっていたjquery-mobileのみを含めていました。


3

正しい内容を指すようにスクリプトタグを変更し、エディターでスクリプトの順序を正しいものに変更しました。しかし、変更を保存するのを完全に忘れていました。


2

同様の問題がありましたが、スタイルシートのリンクの末尾に>がなかったためです。


2
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
<script type="text/javascript" src="local_xxx.js"></script>

私は同様の問題を抱えていますが、Androidデバイスのwebviewでテストしたときにネットワークが切断されていることに気づかず、ローカルjsはネットワークを必要としないため、ロードするのに問題はありません。ばかげているように見えますが、それを理解するのに1時間も無駄にしています。


2

jQueryライブラリを参照していません。

HTMLに次のような行を含める必要があります。

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>

2

同様の問題がありました。テストサーバーは "http"で正常に動作していました。しかしSSLのある本番では失敗しました。

したがって、本番環境では「HTTP」の代わりに「HTPPS」を追加し、テストでは「HTTP」のままにしていた。

テスト:

wp_register_script( 'jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js', array(), null, false );

wp_register_script( 'custom-script', plugins_url( '/js/custom.js', __FILE__ ), array( 'jquery' ) );

製造:

wp_register_script( 'jquery', 'https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js', array(), null, false );

wp_register_script( 'custom-script', plugins_url( '/js/custom.js', __FILE__ ), array( 'jquery' ) );

これがワードプレスに取り組んでいる誰かを助けることを願っています。


1

奇妙なことに、私の問題はPHPが原因でした。

REST API呼び出しが失敗し、その後ライブラリのロードが中断されていました。失敗はREST呼び出しによるものだったので、phpコンパイルエラーは発生しませんでした。

jqueryの読み込みに問題がなければ、これもオプションとして保持してください。


1

モバイルホットスポットからインターネットを閲覧していたときに、この問題が発生しました。また、画像を圧縮し、bodyタグの下部に次のスクリプトを追加しました

<script language="javascript"><!--
bmi_SafeAddOnload(bmi_load,"bmi_orig_img");//-->
</script>

適切なwifi接続に接続すると、すべてがうまくいくようです。これが誰かを助けることを願っています。


1

これは、ネットワークに問題がある場合にも発生する可能性があります。つまり、「jqueryスクリプト」が用意されていて、使用前に含まれていますが、ページのロード時にjquery-scriptsにアクセスできないため、「$」への定義は次のように扱われます。 「未定義の参照」。

テスト/デバッグの目的の場合::ブラウザで「jquery-script」URLにアクセスしてみることができます。アクセス可能であれば、ページは適切に読み込まれるはずです。そうでなければ、上記のエラー(または他のスクリプト関連のエラー)が表示されます。例-http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.jsブラウザ(またはブラウザコンテキストスタンス)でにアクセスできる必要があります。

同様の問題がありました。Windowsホストブラウザーでhtmlページを(スクリプトを使用して)読み込むことができましたが、vm-ubuntuで読み込むことができませんでした。ネットワークの問題を解決し、問題を解決しました。


0
var $ = jQuery;
jQuery(document).ready(function($){

1
これは絶対に答えではありません。あなたはいくつかの説明を追加する必要があります。
jmlemetayer 2017

これはWordpressあなたがそれを言及すべきソリューションです。
Hexodus

あなたは私の日を救った。WordPressでそれを行うのに苦労していましたが、このソリューションは魅力のように機能しました。
rahimv
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.