Leí sobre los comportamientos de Drupal hoy e intenté escribir el siguiente código.
(function ($) {
Drupal.behaviors.mymodule = {
attach: function (context, settings) {
$('#mymodule_id', context).change(function () {
alert('Handler for .change() called.');
});
}
};
}(jQuery));
- Es
Drupal.behaviors.mymoduleel espacio de nombres? - ¿Cuáles son los parámetros de contexto y configuración pasados al comportamiento de Drupal?
- ¿Es esto el equivalente de
document.ready()? - ¿Puedo adjuntar cualquier número de funciones?
- ¿Puedo definir funciones de JavaScript que se llamarán en alguna parte?
7
javascript
Hacker
fuente
fuente

Respuestas:
En resumen, la ventaja de Behaviors
document.ready()es que se vuelven a aplicar automáticamente a cualquier contenido cargado a través de AJAX.mymodulees su espacio de nombres, que debe ser único.contextes la parte de la página a la que se aplica esto, por ejemplo, una parte de un formulario que se ha actualizado con AJAX. Puede adjuntar múltiples comportamientos, pero creo que necesita usar un nombre único (mymodule) para cada uno de ellos.Eche un vistazo a los siguientes recursos para obtener más información:
fuente
En palabras sencillas,
Drupal.behaviorses una mejor manera de implementarjQuery.readyA diferencia de lo
jQuery.readyque solo se ejecuta una vez cuando el DOM está listo,Drupal.behaviorsse puede ejecutar varias veces durante la ejecución de la página.Por ejemplo, en las vistas de desplazamiento infinito, se cargarán más elementos cuando el usuario haga clic en cargar más botón, por lo tanto, DOM cambiará después de la carga inicial.
¿Qué pasa si queremos agregar clases a los elementos recién agregados? Aquí los comportamientos de Drupal son útiles.
Drupal llamará a los comportamientos adjuntos cuando se carga el DOM y también cuando Ajax lo cambia, pasando dos argumentos
contexto y configuración
La primera vez que se llama a Drupal.attachBehaviors (), la variable de contexto contiene el objeto de documento que representa el DOM, pero para el resto de las llamadas, el contexto contendrá el fragmento de HTML afectado.
la configuración contiene información transmitida a JavaScript a través de PHP, es similar a acceder a ella a través de Drupal.settings.
Además, los módulos también pueden llamar a Drupal.attachBehaviors ().
fuente