Eu tenho dois módulos diferentes que, de várias maneiras, trabalham juntos. Uma das coisas em que trabalham juntos é que o módulo A carrega conteúdo via AJAX, e o módulo B precisa anexar ouvintes de eventos ao conteúdo carregado.
No entanto, parece que quando o conteúdo é carregado via AJAX pelo módulo A, apenas a função 'attach' de Drupal.behaviours.a é invocada, e não a função 'attach' de Drupal.behaviours.b . Ambas as funções são invocadas no carregamento da página, mas não no carregamento subsequente do conteúdo 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');
}
}
Como faço para executar a função 'anexar' do Drupal.behaviours.b toda vez que um módulo carrega novo conteúdo?
7
javascript
sbrattla
fonte
fonte
Drupal.attachBehaviors();
ao retorno de chamada de sucesso do ajax?$('body').ajaxSuccess(Drupal.attachBehaviors);
provavelmente irá funcionarRespostas:
Isso, a partir dos comentários
misc/drupal.js
, explica como deve funcionar:fonte
Tente adicionar isso no Drupal.behavior.b:
fonte