javascript – ¿Cómo evitar que las funciones vinculadas al comportamiento se adjunten dos veces?

Pregunta:

Tengo un comportamiento que añade on algunas casillas de verificación.

(function($) { 
  Drupal.behaviors.mymodule = {
    attach: function (context, settings) {

      $('.skip-line', context).on('change', function(){
        // some code
        if ( confirm(Drupal.t('Apply to all languages?')) ) {
          // applying...
        }
      });
    }
  };
})(jQuery);

Funciona muy bien, pero las casillas de verificación están en la parte cargada con AJAX. Si recargo esa parte del formulario, al hacer clic en ellos, aparece la confirmación dos veces. Ahora, sé que puedo probar la función interna si es la primera vez consecutiva que se llama, pero preferiría asegurarme de que se agregue a mi elemento solo una vez y, por lo tanto, se llame solo una vez. ¿Cómo puedo hacer eso?

Respuesta:

La función once() ayudará con eso, por ejemplo

(function($) { 
   Drupal.behaviors.mymodule = {
    attach: function (context, settings) {

      $('.skip-line', context).once('mymodule').on('change', function(){
        // some code
        if ( confirm(Drupal.t('Apply to all languages?')) ) {
          // applying...
        }
      });
    }
  };
})(jQuery);

Una de las muchas referencias

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım