J'ai lu des articles sur les comportements de Drupal aujourd'hui et j'ai essayé d'écrire le code suivant.
(function ($) {
Drupal.behaviors.mymodule = {
attach: function (context, settings) {
$('#mymodule_id', context).change(function () {
alert('Handler for .change() called.');
});
}
};
}(jQuery));
- Est-ce que
Drupal.behaviors.mymodule
l'espace de noms? - Quels sont les paramètres de contexte et de paramètres transmis au comportement Drupal?
- Est-ce l'équivalent de
document.ready()
? - Puis-je attacher un nombre quelconque de fonctions?
- Puis-je définir des fonctions JavaScript qui seront appelées quelque part?
7
javascript
Pirate
la source
la source
Réponses:
En bref, l'avantage des comportements
document.ready()
est qu'ils sont automatiquement réappliqués à tout contenu chargé via AJAX.mymodule
est votre espace de noms, qui doit être unique.context
est la partie de la page à laquelle cela s'applique, par exemple une partie d'un formulaire mis à jour avec AJAX. Vous pouvez associer plusieurs comportements, mais je pense que vous devez utiliser un nom unique (mymodule) pour chacun de ceux-ci.Consultez les ressources suivantes pour plus d'informations:
la source
En termes simples,
Drupal.behaviors
est une meilleure façon de mettre en œuvrejQuery.ready
Contrairement à
jQuery.ready
ce qui ne s’exécute qu’une fois lorsque le DOM est prêt, ilDrupal.behaviors
peut être exécuté plusieurs fois au cours de l’exécution de la page.Par exemple, dans les vues défilement infini, plus d'éléments seront chargés lorsque l'utilisateur cliquera sur le bouton Charger plus, de sorte que DOM changera après le chargement initial.
Et si nous voulons ajouter des classes aux éléments nouvellement ajoutés? Ici, les comportements Drupal sont utiles.
Drupal appellera les comportements attachés lorsque le DOM est chargé et également lorsqu'il est modifié par Ajax, en passant deux arguments
contexte et paramètres
La première fois que Drupal.attachBehaviors () est appelé, la variable de contexte contient l'objet document représentant le DOM, mais pour le reste des appels , le contexte contiendra le fichier HTML affecté.
paramètres contient des informations transmises à JavaScript via PHP, cela revient à y accéder via Drupal.settings.
De plus, les modules peuvent également appeler Drupal.attachBehaviors ().
la source