私の xxx.js.coffee の内容:
$->
$("#clk").click ->
alert "hello world"
$("#clk1").click ->
alert "hello"
ID「clk」はindex.html.erbにあり、「clk1」はshow.html.erbにあります
「index.html.erb」ではコーヒーが動作しますが、「show.html.erb」にジャンプしても何も警告されません。
どうすれば修正できますか?
私の xxx.js.coffee の内容:
$->
$("#clk").click ->
alert "hello world"
$("#clk1").click ->
alert "hello"
ID「clk」はindex.html.erbにあり、「clk1」はshow.html.erbにあります
「index.html.erb」ではコーヒーが動作しますが、「show.html.erb」にジャンプしても何も警告されません。
どうすれば修正できますか?
を記述するときは$ ->
、関数を実行するように jQuery に指示していること、DOMContentLoaded
または同様のイベントを実行していることをおそらくすでに知っているでしょう。残念ながら、Rails の新しいバージョンでは、ターボリンクと呼ばれる機能がデフォルトでオンになっています。この機能は、新しいリンクをクリックしたときにページをリロードせず、代わりに ajax を介して新しいページをフェッチして現在の本文を置き換えるようにブラウザーに指示することで、ページを高速化します。
欠点は、ページがリロードされず、「#clk1」ハンドラーの登録show.html.erb
が表示されたときに再度実行されないことです。mu がコメントで既に指摘しているように、使用する正しいイベントについては、この質問への回答を確認してください。
別のページからリンクした後、Rails の JQuery が失敗し、ページの読み込み時に動作する
個人的には、新しい Rails 4 プロジェクトで最初に行うことは、ターボリンクを削除することです。解決するよりも多くの問題を引き起こすと思います。gem 'turbolinks'
から行を削除するだけGemfile
です。