Ich habe heute über das Verhalten von Drupal gelesen und versucht, den folgenden Code zu schreiben.
(function ($) {
Drupal.behaviors.mymodule = {
attach: function (context, settings) {
$('#mymodule_id', context).change(function () {
alert('Handler for .change() called.');
});
}
};
}(jQuery));
- Ist
Drupal.behaviors.mymodule
der Namespace? - Welche Kontext- und Einstellungsparameter werden an das Drupal-Verhalten übergeben?
- Ist das das Äquivalent von
document.ready()
? - Kann ich beliebig viele Funktionen anhängen?
- Kann ich JavaScript-Funktionen definieren, die irgendwo aufgerufen werden?
7
javascript
Hacker
quelle
quelle
Antworten:
Kurz gesagt, der Vorteil von Behaviours gegenüber Behaviours
document.ready()
besteht darin, dass sie automatisch auf alle Inhalte angewendet werden, die über AJAX geladen werden.mymodule
ist Ihr Namespace, der eindeutig sein muss.context
ist der Teil der Seite, für den dies gilt, beispielsweise ein Teil eines Formulars, das mit AJAX aktualisiert wurde. Sie können mehrere Verhaltensweisen hinzufügen, aber ich denke, Sie müssen für jedes einen eindeutigen Namen (meinModul) verwenden.Weitere Informationen finden Sie in den folgenden Ressourcen:
quelle
In einfachen Worten,
Drupal.behaviors
ist ein besserer Weg zu implementierenjQuery.ready
Im Gegensatz zu
jQuery.ready
dem, der nur einmal ausgeführt wird, wenn das DOM bereit ist,Drupal.behaviors
kann er während der Seitenausführung mehrmals ausgeführt werden.Beispielsweise werden in Ansichten mit unendlichem Bildlauf mehr Elemente geladen, wenn der Benutzer auf die Schaltfläche "Mehr laden" klickt. Daher ändert sich DOM nach dem ersten Laden.
Was ist, wenn wir den neu hinzugefügten Elementen Klassen hinzufügen möchten? Hier bieten sich Drupal-Verhaltensweisen an.
Drupal ruft angehängte Verhaltensweisen auf, wenn das DOM geladen wird und wenn es von Ajax geändert wird, wobei zwei Argumente übergeben werden
Kontext und Einstellungen
Das erste Mal Drupal.attachBehaviors () wird die gerufene Kontextvariable enthält das Dokument - Objekt repräsentiert das DOM, aber für den Rest des Anrufe Zusammenhangs hält das betroffene Stück HTML.
settings enthält Informationen, die über PHP an JavaScript weitergeleitet werden, und ähnelt dem Zugriff über Drupal.settings.
Darüber hinaus können Module auch Drupal.attachBehaviors () aufrufen.
quelle