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:
var one = function( element, evt, callback ) {
element.addEventListener( evt, function( 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.