質問: Win8.1 Rails 5.0.1 Ruby 2.3.3p222 クリックでポップアップの表示をしたく、Railsにcolorboxを追加しました。 表示まではいきましたが、そのあとで困っています。 表示したフォームを閉じると、一応閉じたように見えるのですが、 どうも画面が残っているようなんです。 【1回目】 ・ポップアップのフォームを表示 ・1回のクリックで閉じる 【2回目】 ・ポップアップのフォームを表示 ・2回のクリックで閉じる 【3回目】 ・ポップアップのフォームを表示 ・4回のクリックで閉じる どうも、表示の度に倍々式に画面が残っているようなんです。 4回目以降はCPUがビジー状態でフリーズしてしまいます。 colorboxのjQueryは何も変更していません。 また、ポップアップを表示するテストだけなのでアプリも scaffoldで作ったドシンプルなものです。 何が原因でしょうか? 宜しくお願い致します。 ビュー app\views\hoges\index.html.erb ``` <%= link_to 'New Hoge', new_hoge_path %> ``` JavaScript app\assets\javascripts\application.js ``` //= require jquery.colorbox //= require common ``` app\assets\javascripts\common.js.coffee ``` $ -> $('a.colorbox').colorbox() ```
回答: pecchan様 これも、誰もが通る道です。 原因はおそらくTurbolinks5 Railsをお手軽にAjaxにして高速化してくれる素晴らしいプログラムですが 下手をすると画面遷移のたびにイベントが発火してしまいます。 つまり閉じるたびに ``` $('a.colorbox').colorbox() ``` が呼ばれているのではないでしょうか 私もTurbolinks5をいじり倒したわけではないので 確証がなくて申し訳ないのですが。 ``` document.addEventListener("turbolinks:load", function() { $('a.colorbox').colorbox(); }); ``` これで、最初の一回だけ発火する様になると思います