Non è difficile con JavaScript fare in modo che il codice legato ad un evento venga eseguito una sola volta.
jQuery dispone del metodo one(). Ecco la nostra implementazione:
'use strict';
const one = ( element, evtName, callback ) => {
element.addEventListener( evtName, e => {
e.preventDefault();
if( !element.dataset.fired ) {
callback();
element.dataset.fired = true;
}
}, false);
};
In pratica tramite un valore booleano legato all'elemento facciamo in modo che il codice venga eseguito una sola volta.