Saltar al contenido

Drupal: ¿por qué la función js click se ejecuta varias veces?

Posterior a de una prolongada selección de información dimos con la respuesta esta duda que pueden tener ciertos lectores. Te compartimos la respuesta y nuestro objetivo es resultarte de mucha ayuda.

Solución:

Lo más importante es que tienes que usar el selector JQuery context. De lo contrario, ejecuta todo el DOM a través de su código js en cualquier momento cuando los comportamientos de Drupal le pasan solo context procesar.

Si su función aún se ejecuta varias veces, agregue una vez () con un identificador único:

$('input.myCustom', context).once('mySecondBehavior').each(function () {

No olvides agregar la biblioteca. core/jquery.once a mytheme.libraries.yml, consulte https://www.drupal.org/docs/8/api/javascript-api/javascript-api-overview

Acabo de encontrar esta publicación mientras trabajaba en algo en nuestro proyecto. Tenemos múltiples eventos vinculados a $(‘cuerpo’, contexto) ya que la flexibilidad en la plataforma permite que los widgets y similares se coloquen en casi cualquier lugar dentro del cuerpo.

Usando $('body', context).on('click', '.modal-trigger', function (e) ); estaba causando que el evento de clic se vinculara al cuerpo 2x.

simplemente usando $('body', context).once().on('click', '.modal-trigger', function (e) ); estaba vinculando solo el último script adjunto/cargado al cuerpo, lo que resultó en que no se adjuntó ningún otro evento de script.

Agregar .once() con un identificador único para cada secuencia de comandos resolvió este problema maravillosamente.

Ex. 1er guión modal

  Drupal.behaviors.SigmaModal = {

    attach: function (context, settings) {

      // Trigger sigma dialog on click.
      $('body', context).once('SigmaModal').on('click', '.sigma-modal-trigger', function (e) {

segundo guión modal

  Drupal.behaviors.DisplayModal = {

    attach: function (context, settings) {

      // Trigger generic dialogs on click.
      $('body', context).once('DisplayModal').on('click', '.modal-trigger', function (e) {

Te mostramos comentarios y valoraciones

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *