4

Does anyone know why jQuery document ready might not fire on a website? I put exactly this script in footer and it simply doesn't fire (jQuery 1.8 is included in head section):

<script type="text/javascript">
jQuery(document).ready(function() { 
     alert('test');
     jQuery("#slideshow iframe").each(function(){ 
          alert('test');
     });
});
</script>

There are no Javascript errors, console is empty and when I run this in Firebug's console it works:

jQuery("#slideshow iframe").each(function(){ 
     alert('test');
});
4

3 に答える 3

5

この特定の例ではそうではありませんでしたが、これが発生する可能性がある非常に厄介な方法の 1 つは、jQuery バグ 10251です。コールバックでエラーが発生すると、$(document).ready()その後に登録されたすべてのコールバックが実行できなくなります。(この場合、Javascript エラーが発生しますが、まったく無関係に見えるかもしれません。)

于 2014-09-12T15:36:55.873 に答える
3

現在、ページでこのエラーが発生しています

Uncaught TypeError: Property '$' of object [object Window] is not a function 

このエラーの原因はflow.anything-slider-1.0.jsat line内にあります11

ファイルは を使用しjQuery(document).ready()ているため、$定義されていません。

11を using$からjQuery作品に変更する:

// doesn't work
$("#content").before("<div id=\"cycledump\"></div>");

// Does work
jQuery("#content").before("<div id=\"cycledump\"></div>");

ファイル全体が代わりに jQuery を使用して$いるため、ファイルはおそらく、混同するのではなく、jQuery を使用する 1 つの方法に固執する必要があります。

編集.ready()
ドキュメントを 再確認したところ、次の段落は問題に関連しているようで興味深いものでした:

jQuery 名前空間のエイリアス
別の JavaScript ライブラリを使用する場合、$.noConflict()名前空間の問題を回避するために呼び出したい場合があります。この関数が呼び出されると、$ショートカットが使用できなくなり、jQuery通常は$.

ただし、メソッドに渡されるハンドラーは.ready()、グローバル jQuery オブジェクトに渡される引数を取ることができます。これは、.ready()他のコードに影響を与えることなく、ハンドラーのコンテキスト内でオブジェクトの名前を変更できることを意味します。

jQuery(document).ready(function($) {
  // Code using $ as usual goes here.
});

これは、行を修正する代わりに11、最初の行を に変更して、 を引数としてjQuery(document).ready(function($) {渡すこともできることを意味します。これにより、jQuery と同様にファイル全体で $使用できるようになる場合があります。$

とにかく、$引数として渡すことがあなたの場合にうまくいくかどうかはわかりませんが、うまくいく場合に備えて言及したと思いました。

于 2012-09-22T10:16:50.697 に答える
1

jQuery ライブラリ パスの問題である可能性があります。jquery.comからロードしてみてください-

<script src="http://code.jquery.com/jquery-1.8.0.min.js"></script>

<script type="text/javascript">

$(document).ready(function() { 
     alert('test');
});

</script>

このコードをコピーしてheadセクションに貼り付けます

編集:

あなたが使用jQuery 1.4.2している1.8 jQuery UI

script taginheadセクションを移動してみてください。動作するはずです

于 2012-09-22T10:08:12.907 に答える