J'ai deux modules différents qui, à bien des égards, fonctionnent ensemble. Une des choses sur lesquelles ils travaillent ensemble est que le module A charge le contenu via AJAX et que le module B doit attacher des écouteurs d'événements au contenu chargé.
Cependant, il semble que lorsque le contenu est chargé via AJAX par le module A, seule la fonction «attach» de Drupal.behaviours.a est invoquée, et non la fonction «attach» de Drupal.behaviours.b . Les deux fonctions sont invoquées lors du chargement de la page, mais pas lors du chargement de contenu AJAX ultérieur.
// This runs every time module A loads new content.
Drupal.behaviors.a = {
attach: function(context, settings) {
alert('a:attach');
}
}
// This only runs on page load, but never when module A loads new content.
Drupal.behaviors.b = {
attach: function(context, settings) {
alert('b:attach');
}
}
Comment puis-je exécuter la fonction «attach» de Drupal.behaviours.b à chaque fois qu'un module charge un nouveau contenu?
7
javascript
sbrattla
la source
la source
Drupal.attachBehaviors();
au rappel de succès ajax?$('body').ajaxSuccess(Drupal.attachBehaviors);
probablementRéponses:
Ceci, à partir des commentaires
misc/drupal.js
, explique comment cela est censé fonctionner:la source
Essayez d'ajouter ceci dans Drupal.behavior.b:
la source