JavaScript: gestire gli eventi e i loro callback con gli attributi di dati HTML5

JavaScript: gestire gli eventi e i loro callback con gli attributi di dati HTML5

Possiamo implementare un binding tra elementi HTML e JavaScript usando gli attributi di dati.

La soluzione consiste nell'usare il valore dell'attributo di dati come riferimento ad un metodo di un oggetto e ad un evento. Quindi data la seguente marcatura:


<p>
    <button id="test-button" data-action="click:test">Test</button>
</p>

avremo:


'use strict';

(function( namespace ) {
	
	function test() {
		alert( "ok" );
	}
	
	namespace.test = test;
	
	function doAction( element ) {
		const action = element.dataset.action;
        const [evtType, callback] = action.split(':');
		element.addEventListener( evtType, function() {
			namespace[callback]();	
			
		}, false);
	}
	
	document.addEventListener( "DOMContentLoaded", function() {
		doAction( document.querySelector( "#test-button" ) );	
		
	});
	
})( window );