web-dev-qa-db-ja.com

TypeError: 'undefined'は関数ではありません( '$(document)'の評価)

  1. 私はWordPressサイトを使っています。
  2. このスクリプトをヘッダーに含めます。

スクリプトがロードされるとき、私はこのエラーを得ます:

TypeError: 'undefined'は関数ではありません( '$(document)'の評価)

それが何を引き起こしているのか、それが何を意味しているのか私にはわかりません。

Firebugでは、これが得られます。

$は関数ではありません

137
dcolumbus

Wordpressはデフォルトで noConflict モードでjQueryを使用します。変数名として$ではなくjQueryを使用してそれを参照する必要があります。つかいます

jQuery(document);

の代わりに

$(document);

$が再びjQueryを参照するように(そしてグローバル名前空間を汚染することも避けるように)、これを自己実行関数にまとめることができます。

(function ($) {
   $(document);
}(jQuery));
239
El Yobo

JQueryの noConflict を使用してください。それは私にとって不思議でした

var example=jQuery.noConflict();
example(function(){
example('div#rift_connect').click(function(){
    example('span#resultado').text("Hello, dude!");
    });
});

つまり、あなたのHTMLにjQueryが含まれていると仮定します。

<script language="javascript" type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
24
Leno Britto

これを使って:

var $ =jQuery.noConflict();
15
Suman Biswas

この問題はChromeでしか見られませんでした。

追加してみた

var $ =jQuery.noConflict();

電話をかける直前

$(document).ready(function () {

出来た。

どうもありがとう

11
Le_Dhul

このスニペットを試してください:

jQuery(function($) {
  // Your code.
})

それは私のために働いた、多分それはあなたにも役立つでしょう。

11
Gurpreet Dhanoa

また、jQueryを含め、続いていくつかのコンポーネント/他のライブラリ(jQuery UIなど)を含め、次に誤ってjQueryを含めます。これによりjQueryが再定義され、インスタンスヘルパー(.datepickerなど)が削除されます。

6
agrath
 ;(function($){
        // your code
    })(jQuery);

上のクロージャーの中にあなたのjsコードを置いてください、それは問題を解決するべきです。

4
Bikram Shrestha

私はこれを使うだろう

(function ($) {
   $(document);
}(jQuery));
4
JoT

私はまたWeb develoment carrierでそのような問題に何度も直面しました。実際にはそれはJSの競合ではありません、我々がブラウザにhtmlウェブサイトをロードするとき我々はそのようなエラーに直面しません、しかし我々がlocalhostを通してこれらのタイプのウェブサイトをロードするとき我々はそのような問題に直面します。これはlocalhostのせいです。 localhostを通してスクリプトをロードすると、スクリプトをスキャンして出力をレンダリングします。しかし、localhostを使わなかったとき。出力をスキャンするだけです。例えば、ローカルホストの横にphpコードを書き、ホストなしで実行するとエラーになります。しかし、コードが正しく、Hostを介して実行されている場合は実際の出力が得られ、inspect要素を使用するとHTMl形式ではあるがPHP形式ではない出力コードが得られます。

これはレンダリングエラーです。そのため、これらのjqueryコードのエラーを修正するための解決策の1つは、この方法を使用することです。

jQuery(document).ready(function($){
/******** Body of Jquery Code*****/
});

このコードがすることはjqueryを適用することによって関数への可変として '$'を登録することです。それ以外の場合、デフォルトでは.jsファイルはjavascriptとしてのみ読み取られます。

2
Rajan Lama

あなたはfunction()で$を渡すことができます

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

// jQuery code is in here

});

$(document);をこのjQuery(document);に置き換えることもできます。

あるいはjQuery.noConflict()を使うこともできます

var jq=jQuery.noConflict();
jq(document).ready(function(){  
  jq('selector').show();
});
1
Ganesh

2つのこと

  1. $(document)の前に、必ずjQueryライブラリを追加してください。
  2. それから、前のコメントのように、すべての "$"を:jQueryで変更してください。

これの間にすべてのスクリプトをラップする...

<script>
    $.noConflict();
    jQuery( document ).ready(function( $ ) {
      // Code that uses jQuery's $ can follow here.
    });
</script>

JQueryのように、多くのJavaScriptライブラリは$を関数名または変数名として使用します。 jQueryの場合、$はjQueryの単なるエイリアスであるため、すべての機能は$を使用せずに利用できます。 jQueryと一緒に別のJavaScriptライブラリーを使用する必要がある場合は、 $。noConflict() を呼び出して$の制御を他のライブラリーに戻してください。 $の古い参照はjQueryの初期化中に保存されます。 noConflict()は単にそれらを復元します。

1
Jitendra Damor

以下のスニペットではjQueryと$の両方を使用できます。それは私のために働いた

jQuery( document ).ready(function( $ ) {
  // jQuery(document)
  // $(document)
});
1

私は自分のページヘッダにjQueryを含めるときにもこの問題に遭遇しました、ホストがすでにそれを自動的にページに含んでいたことに気づいていませんでした。だからあなたのページをライブでロードしてjQueryがリンクされているかどうか見るためにソースをチェックする。

1
FrostyL