Eu li sobre os comportamentos do Drupal hoje e tentei escrever o seguinte código.
(function ($) {
Drupal.behaviors.mymodule = {
attach: function (context, settings) {
$('#mymodule_id', context).change(function () {
alert('Handler for .change() called.');
});
}
};
}(jQuery));
- É
Drupal.behaviors.mymodule
o espaço para nome? - Quais são os parâmetros de contexto e configurações passados para o comportamento do Drupal?
- Isso é equivalente a
document.ready()
? - Posso anexar qualquer número de funções?
- Posso definir funções JavaScript que serão chamadas em algum lugar?
7
javascript
Hacker
fonte
fonte
Respostas:
Em resumo, a vantagem do Behaviors
document.ready()
é que eles são automaticamente reaplicados a qualquer conteúdo carregado pelo AJAX.mymodule
é o seu espaço para nome, que precisa ser exclusivo.context
é a parte da página à qual isso se aplica, por exemplo, parte de um formulário que foi atualizado com o AJAX. Você pode anexar vários comportamentos, mas acho que você precisa usar um nome exclusivo (mymodule) para cada um deles.Consulte os seguintes recursos para obter mais informações:
fonte
Em palavras fáceis,
Drupal.behaviors
é a melhor maneira de implementarjQuery.ready
Diferente do
jQuery.ready
que é executado apenas uma vez quando o DOM está pronto,Drupal.behaviors
pode ser executado várias vezes durante a execução da página.Por exemplo, nas visualizações rolagem infinita, mais elementos serão carregados quando o usuário clicar no botão carregar mais; portanto, o DOM será alterado após o carregamento inicial.
E se quisermos adicionar classes aos novos elementos adicionados? Aqui os comportamentos Drupal são úteis.
Drupal chamará comportamentos anexados quando o DOM for carregado e também quando for alterado pelo Ajax, transmitindo dois argumentos
contexto e configurações
Na primeira vez em que Drupal.attachBehaviors () é chamado, a variável de contexto contém o objeto de documento que representa o DOM, mas, pelo restante das chamadas, o contexto retém a parte afetada do HTML.
configurações contém informações repassadas ao JavaScript via PHP, é semelhante ao acesso a Drupal.settings.
Além disso, os módulos também podem chamar Drupal.attachBehaviors ().
fonte