jQuery - キャッチされない TypeError: $ は関数ではありません

概要

とても混乱しています…自分のサイトで作業していて、jQueryを追加しました。テストしたところ、jQuery は何も行わないことがわかりました。次に、考えられる最もシンプルでありながらわかりやすいコードを試してみました。

<script type="text/javascript">
  $("html").click(function() {
    $("html").html("");
  });
</script>

しかしそれも何も起こりませんでした。そこで、js コンソールで同じコードを試してみましたが、次のエラーが返されました。

Uncaught TypeError: $ is not a function
  at <anonymous>:2:1
  at Object.InjectedScript._evaluateOn (<anonymous>:848:140)
  at Object.InjectedScript._evaluateAndWrap (<anonymous>:891:34)
  at Object.InjectedScript.evaluate (<anonymous>:627:21)

$ を入力するだけで「未定義」が返されます。

調査したところ、Gemfile を誤って移動してしまい、サーバーが jquery-rails gem にアクセスできなかった可能性があることがわかりました。しかし、元に戻してサーバーを再起動しても、問題は解決しませんでした。

次に、ページに欠陥のあるコードがあり、jQuery の実行を妨げているのではないかと考えました。すべてのコードを削除して空のドキュメントにし、実行して再試行しましたが、コンソールに同じエラーが表示されました。

私のアプリの先頭には次のものが含まれています。

<head>
  <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
</head>

私の app/assets/javascripts/application.js には //= require jquery という行が含まれています

そしてバンドルインストールは「jquery-rails 4.1.1」を返します。

以前に同じページで多くの jQuery を実行しましたが、問題はありませんでした。私のサーバーが突然 jQuery を理解できなくなったようです。いったい何が起こっているのでしょうか?

解決策

次のように jQuery 関数でラップします。

// Note the "$" inside function() - that's the key
jQuery( document ).ready(function( $ ) {

  $("html").click(function() {
     $("html").html("");
  });

});