2013-05-25 12 views

Odpowiedz

7

Możesz użyć zdarzenia "page: load" z turbolinków do podłączenia do niego funkcji initialize. Będzie się nazywał zawsze, gdy turbolinki w pełni wprowadzą twoją nową stronę.

function initialize() { 
    //js code what you want run always 
} 

$(document).ready(initialize); 
$(document).on('page:load', initialize); 

Jeśli używasz jQuery dużo, warto zainstalować w swoim Gemfile

gem 'jquery-turbolinks' 

i Twoich application.js

//= require jquery 
//= require jquery.turbolinks 

Turbolinks ma dwa inne użyteczne zdarzeń:

page:fetch //when new page begin to download 
page:change //when the page has changed over 
+1

problem, o którym musisz pamiętać mimo to za każdym razem, gdy się ładuje, ładuje się dodatkowo do już załadowanego skryptu. Więc jeśli wiążycie wydarzenia w skrypcie dla ex, będą się wiązać w kółko. Nadal szukam najlepszego rozwiązania, aby tego uniknąć. – ifightcrime

+1

Myślę, że te problemy już nie istnieją z najnowszymi turbolinkami i turbulentami jquery ... Możesz dodać zawsze dodatkową klasę do elementu dom, który może działać jako semafor, aby uniknąć wielu ograniczeń ... '$ (# yourourselector: nie (.bounded)). addClass ("ograniczone"). on ('zdarzenie', do_this); ' – Zoltan

+2

Prawidłowo, tylko chciał, aby ludzie byli świadomi. Coś, co nie wydaje się być wspominane bardzo szeroko. Napisałem szybki skrypt, który automatycznie usuwa powiązania z dowolnymi zdarzeniami dodanymi przed załadowaniem następnej strony. – ifightcrime

Powiązane problemy