Heim >Web-Frontend >js-Tutorial >Wie funktioniert jQuerys „$(document).ready()' mit den Turbo-Links von Rails 4?

Wie funktioniert jQuerys „$(document).ready()' mit den Turbo-Links von Rails 4?

Susan Sarandon
Susan SarandonOriginal
2024-12-21 02:51:13154Durchsuche

How to Make jQuery's `$(document).ready()` Work with Rails 4's Turbo Links?

Rails 4: Verwendung von jQuerys „$(document).ready()“ mit Turbo-Links-Integration

Während der Arbeit an Rails 4 Bei einer Anwendung stehen Entwickler häufig vor der Notwendigkeit, ihre JavaScript-Dateien effektiv zu organisieren. Traditionell war JavaScript-Code über verschiedene Ansichten verteilt. Ein organisierterer Ansatz besteht jedoch darin, sie in separate Dateien zu kompilieren und die Assets-Pipeline zu nutzen.

Wenn Turbo-Links jedoch aktiviert ist, stößt das jQuery-Ereignis „ready“ auf eine Einschränkung. Bei nachfolgenden Klicks wird das „ready“-Ereignis nicht mehr ausgelöst, was sich auf die Ausführung des Codes innerhalb seines Gültigkeitsbereichs auswirkt. Dieses Problem entsteht dadurch, dass die Seite bei aktivierten Turbo-Links nicht neu geladen wird.

Um dieses Problem zu beheben, muss unbedingt sichergestellt werden, dass jQuery-Ereignisse einwandfrei funktionieren, während Turbo-Links aktiv bleiben. Zwei Ansätze können in Betracht gezogen werden:

Ansatz 1: Event Wrapping mit Rails-spezifischem Listener

Diese Methode beinhaltet das Einschließen von JavaScript-Skripten in einen Rails-spezifischen Listener, um deren effektiv sicherzustellen Ausführung beim Laden der Seite.

Ansatz 2: Verwendung von Turbo-Links Ereignis

Turbo-Links bietet ein bestimmtes Ereignis, „page:load“, das zum Auslösen des erforderlichen JavaScript-Codes verwendet werden kann. Durch die Nutzung dieses Ereignisses können Entwickler das durch nachfolgende Klicks verursachte Problem umgehen.

Für CoffeeScript-Benutzer bietet das folgende Code-Snippet eine Lösung:

ready = ->

  ...your coffeescript goes here...

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

Die letzte Zeile dieses Snippets wartet auf das „page:load“-Ereignis, das Turbo-Links auslöst.

Für JavaScript-Benutzer kann der folgende äquivalente Code sein eingesetzt:

var ready;
ready = function() {

  ...your javascript goes here...

};

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

In Rails 5 wurde mit dem aktualisierten Turbolinks 5 das „page:load“-Ereignis durch „turbolinks:load“ ersetzt, das bereits beim ersten Laden der Seite ausgelöst wird. Dies vereinfacht den Code wie folgt:

$(document).on('turbolinks:load', function() {

  ...your javascript goes here...

});

Durch die Implementierung dieser Lösungen können Entwickler effektiv sicherstellen, dass jQuery-Ereignisse trotz des Vorhandenseins von Turbo-Links weiterhin ordnungsgemäß funktionieren.

Das obige ist der detaillierte Inhalt vonWie funktioniert jQuerys „$(document).ready()' mit den Turbo-Links von Rails 4?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn