Mam dwa różne moduły, które pod wieloma względami współpracują ze sobą. Jedną z rzeczy, nad którymi wspólnie pracują, jest to, że moduł A ładuje zawartość przez AJAX, a moduł B musi dołączyć detektory zdarzeń do ładowanej treści.
Wydaje się jednak, że gdy zawartość jest ładowana przez AJAX przez moduł A, wywoływana jest tylko funkcja „attach” z Drupal.behaviours.a , a nie funkcja „attach” z Drupal.behaviours.b . Obie funkcje są wywoływane przy ładowaniu strony, ale nie przy kolejnym ładowaniu treści AJAX.
// 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');
}
}
Jak ustawić funkcję „dołącz” w pliku Drupal.behaviours.b za każdym razem, gdy dowolny moduł ładuje nową zawartość?
7
javascript
sbrattla
źródło
źródło
Drupal.attachBehaviors();
do wywołania zwrotnego ajax?$('body').ajaxSuccess(Drupal.attachBehaviors);
, prawdopodobnie zadziałaOdpowiedzi:
To, na podstawie komentarzy w
misc/drupal.js
, wyjaśnia, jak to powinno działać:źródło
Spróbuj dodać to w Drupal.behavior.b:
źródło