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.mymodule
el 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.mymodule
es su espacio de nombres, que debe ser único.context
es 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.behaviors
es una mejor manera de implementarjQuery.ready
A diferencia de lo
jQuery.ready
que solo se ejecuta una vez cuando el DOM está listo,Drupal.behaviors
se 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