7

Web ページで jQuery を使用しています。$Internet Explorer で使用すると問題なく動作します。$Chrome または Firefox で参照 すると、次のエラーで失敗します。

Uncaught ReferenceError: $ is not defined.

スクリーンショット:

ここに画像の説明を入力

私のソースコードで:

<!DOCTYPE html>
<html>
<head>
   <script type="text/javascript" src="jquery-1.7.2.min.js"></script>
   <script type="text/javascript">
      function divClick(sender, event)
      {
//       var chk = $(sender).find("input").first()[0];
         var chk = jQuery(sender).find("input").first()[0];
         alert("Works in ie");
      }
   </script>
</head>
<body>

<div onclick="divClick(this, event)">
    <input type="checkbox">
</div>

</body>
</html>

注:ブラウザーは、ローカル ファイル システム上のファイルに誘導されています。

ここに画像の説明を入力

更新: に変更してみましたjQuery

更新:Chromeはjqueryファイルを見つけます(つまり、404はありません):

ここに画像の説明を入力

4

7 に答える 7

7

この質問は、Chrome と Firefox のバグを文書化するためのものです。

Html File encoding           IE9      Chrome
=========================    =======  ======
Windows-1252                 Works    Works
UTF-8 (without BOM)          Works    Works 
UTF-8 (with BOM EFBB)        Works    Works 
UTF-16 (with LE BOM FFFE)    Works    Fails
UTF-16 (with BE BOM FEFF)    Works    Fails

scriptおそらくChrome(およびFirefox)は、別のファイルがファイルと同じエンコーディングを持っていると想定していhtmlます。

jquery-1.7.2.js次に、Chrome はUTF-16として読み取ろうとし、ファイルが純粋な (Windows-1252) ガベージであることを発見してショックを受けます。

于 2012-05-18T20:08:33.813 に答える
5

のパスjquery-1.7.2.min.jsが正しいかどうかを確認します。ファイルがダウンロードされているかどうかを確認するために、firefox または chrome 開発者ツールを使用している場合は、firebug でチェックできます。ほとんどの場合、jQuery オブジェクトのエイリアスであるページで $ が定義されていないため、jQuery ファイルに対して 404 が発生します。

于 2012-05-18T19:50:25.607 に答える
3

Firefox および Chrome で Javascript を使用すると、次のエラーが発生する可能性があります。

Uncaught ReferenceError: $ is not defined.

次のようにjqueryを含めた場合:

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

また、サーバーが javascript コンテンツのダウンロードと実行時の実行を許可しないように構成されていると、上記のエラーが発生します。エラー全体を見てください。

[blocked] The page at https://yoursite.com/blah# ran insecure content 
from http://ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js.
/blah#:1
Uncaught ReferenceError: $ is not defined 

これは、Web サーバーが JavaScript コンテンツをその場でロードすることを許可していないことを意味します。誰かが悪意のあるものをそこに挿入して、ダウンロードしてサーバーを所有する可能性があるため、セキュリティ上のリスクがあります。

于 2013-11-28T03:40:35.807 に答える
1

Chrome 49 では、上記のどれも当てはまりませんでした。次のように、タイプを「application/javascript」として指定する必要がありました。

<script src="lib/jquery-1.11.3.min.js" type="application/javascript"></script>

「text/javascript」を使用しても機能しませんでした。

于 2016-05-10T15:05:48.897 に答える
0

HTML の onclick の代わりに、Jquery コードの id を介してすべてを割り当てました。

divがチェックされているかどうか、またはチェックボックスがチェックされているかどうかを知りたいかどうかはわかりません。入力チェックをコードに入れ、div がクリックされた場合はコードをコメントアウトしました。

<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>

<script type="text/javascript">
$(function(){
// $('#divid').unbind("click").click(function(){
$('#someid').unbind("click").click(function(){
if($(this).is(':checked')){
alert("checked");
}else{
alert("not checked");
}
});
});
</script>

</head>
<body>

<div id="divid"><input type="checkbox" id="someid"></div>

</body>
</html>
于 2012-05-18T20:19:30.370 に答える
0

試す :

var chk = jQuery(sender).find("input").first()[0];
于 2012-05-18T19:51:32.727 に答える
0

関数は、準備ができている dom にラップする必要があります。

$(function(){

  function divClick(sender, event)
  {
     var chk = $(sender).find("input").first()[0];
     alert("Works in ie");
  }

});

これにより、ページが読み込まれた後にのみ関数を起動できます。また、スクリプトは HTML の終了タグの直前にロードする必要があります。すべてのトップではありません。これにより、JS が読み込まれるのを待つ必要がないため、ページは HTML と CSS をより速く読み込むことができます。

また、HTML から jQuery へのパスが正しいことを確認してください。

最後のこと、

代わりに、インライン HTML でクリック リスナーを使用している場合は、それを JS に移動してみてください。これは、それを処理するためのよりクリーンで組織的な方法です。

$('.clickMe').click(function(){
    //do stuff here
}) 
于 2012-05-18T20:05:59.143 に答える