14

ブラウザで戻る/進むボタンを使用すると、Turbolinks がイベントを複数回バインドするという問題があります。document.on() イベントを書いている方法ではないことを確認するための簡単なスクリプトがあるので...

$(document).on 'page:load', ->
  alert 'Loaded'

リンクをクリックすると 1 回起動します。前後 (または別の Turbolink リンク) をクリックすると、2 回起動します。次回は何度も発火し、成長し続けます。これは、jQuery と Turbolinks 以外のマニフェスト ファイルにある唯一のものです。ターボリンクがイベント バインディングを複製しないようにするにはどうすればよいですか?

4

4 に答える 4

6

これは理にかなっています - jquery-turbolinks gem を使用している場合、同じ問題が発生します。これは、ページの読み込みごとに jQuery ドキュメント準備完了関数内のコードが実行されるためです。ドキュメント オブジェクトは Turbolinks で再初期化されないため、バインディングが冗長になります。この場合の解決策は、$(document).on バインディングを jQuery 対応関数の外に配置して、ページの読み込みごとに実行されないようにすることです。

于 2013-10-21T16:31:27.757 に答える
0

私は同じ問題に遭遇しました。問題は、レイアウトで生成していたマークアップが正しくなかったことです。bodyいけないところでタグを閉じていた

于 2015-08-06T03:31:45.677 に答える
0

私は同じ問題を抱えていましたが、基本的に、JSを含める前に変数が定義されているかどうかを照会しました。少し厄介な考えに聞こえます...

于 2014-02-11T23:23:39.030 に答える