@@ -37,6 +37,9 @@
 	 */
 	function create( button ) {
 
+		// Declaring default and optional stateful loading text.
+		var defaultBtnText, statefulText;
+
 		if( typeof button === 'undefined' ) {
 			console.warn( "Ladda button target must be defined." );
 			return;
@@ -45,8 +48,25 @@
 		// The text contents must be wrapped in a ladda-label
 		// element, create one if it doesn't already exist
 		if( !button.querySelector( '.ladda-label' ) ) {
+
+			// Storing original button text.
+			defaultBtnText = button.innerHTML;
+
+			// Creating inner span element.
 			button.innerHTML = '<span class="ladda-label">'+ button.innerHTML +'</span>';
 		}
+		else
+		{
+			// Storing default button text.
+			defaultBtnText = button.querySelector( '.ladda-label' ).innerHTML;
+		}
+
+		// Checking if button has a stateful loading text attribute.
+		if( button.hasAttribute('data-loading-text')  )
+		{
+			// Storing stateful loading text.
+			statefulText = button.getAttribute('data-loading-text');
+		}
 
 		// The spinner component
 		var spinner;
@@ -72,6 +92,13 @@
 				button.setAttribute( 'disabled', '' );
 				button.setAttribute( 'data-loading', '' );
 
+				// Checking if the button has a stateful loading text.
+				if( statefulText )
+				{
+					// Switching to the stateful loading button text.
+					button.querySelector( '.ladda-label' ).innerHTML = statefulText;
+				}
+
 				clearTimeout( timer );
 				spinner.spin( spinnerWrapper );
 
@@ -109,6 +136,13 @@
 					timer = setTimeout( function() { spinner.stop(); }, 1000 );
 				}
 
+				// Checking if the button has a stateful loading text.
+				if( statefulText )
+				{
+					// Reverting to the default button text.
+					button.querySelector( '.ladda-label' ).innerHTML = defaultBtnText;
+				}
+
 				return this; // chain
 
 			},
@@ -188,6 +222,9 @@
 				button.removeAttribute( 'disabled', '' );
 				button.removeAttribute( 'data-loading', '' );
 
+				// Removing stateful loading text attribute, if exists.
+				if( statefulText ) button.removeAttribute( 'data-loading-text', '' );
+
 				if( spinner ) {
 					spinner.stop();
 					spinner = null;