@@ -36,6 +36,8 @@ $.fn.buttonMarkup = function( options ) {
3636 innerClass = "ui-btn-inner" ,
3737 textClass = "ui-btn-text" ,
3838 buttonClass , iconClass ,
39+ hover = false ,
40+ state = "up" ,
3941 // Button inner markup
4042 buttonInner ,
4143 buttonText ,
@@ -60,6 +62,8 @@ $.fn.buttonMarkup = function( options ) {
6062 // We will recreate this icon below
6163 $ ( buttonElements . icon ) . remove ( ) ;
6264 buttonElements . icon = null ;
65+ hover = buttonElements . hover ;
66+ state = buttonElements . state ;
6367 }
6468 else {
6569 buttonInner = document . createElement ( o . wrapperEls ) ;
@@ -76,7 +80,9 @@ $.fn.buttonMarkup = function( options ) {
7680 o . theme = $ . mobile . getInheritedTheme ( el , "c" ) ;
7781 }
7882
79- buttonClass = "ui-btn ui-btn-up-" + o . theme ;
83+ buttonClass = "ui-btn " ;
84+ buttonClass += ( hover ? "ui-btn-hover-" + o . theme : "" ) ;
85+ buttonClass += ( state ? " ui-btn-" + state + "-" + o . theme : "" ) ;
8086 buttonClass += o . shadow ? " ui-shadow" : "" ;
8187 buttonClass += o . corners ? " ui-btn-corner-all" : "" ;
8288
@@ -145,6 +151,8 @@ $.fn.buttonMarkup = function( options ) {
145151 // Assign a structure containing the elements of this button to the elements of this button. This
146152 // will allow us to recognize this as an already-enhanced button in future calls to buttonMarkup().
147153 buttonElements = {
154+ hover : hover ,
155+ state : state ,
148156 bcls : buttonClass ,
149157 outer : e ,
150158 inner : buttonInner ,
@@ -189,6 +197,18 @@ function closestEnabledButton( element ) {
189197 return element ;
190198}
191199
200+ function updateButtonClass ( $btn , classToRemove , classToAdd , hover , state ) {
201+ var buttonElements = $ . data ( $btn [ 0 ] , "buttonElements" ) ;
202+ $btn . removeClass ( classToRemove ) . addClass ( classToAdd ) ;
203+ if ( buttonElements ) {
204+ buttonElements . bcls = $btn [ 0 ] . className ;
205+ if ( hover !== undefined ) {
206+ buttonElements . hover = hover ;
207+ }
208+ buttonElements . state = state ;
209+ }
210+ }
211+
192212var attachEvents = function ( ) {
193213 var hoverDelay = $ . mobile . buttonMarkup . hoverDelay , hov , foc ;
194214
@@ -206,24 +226,24 @@ var attachEvents = function() {
206226 if ( isTouchEvent ) {
207227 // Use a short delay to determine if the user is scrolling before highlighting
208228 hov = setTimeout ( function ( ) {
209- $btn . removeClass ( "ui-btn-up-" + theme ) . addClass ( "ui-btn-down-" + theme ) ;
229+ updateButtonClass ( $btn , "ui-btn-up-" + theme , "ui-btn-down-" + theme , undefined , "down" ) ;
210230 } , hoverDelay ) ;
211231 } else {
212- $btn . removeClass ( "ui-btn-up-" + theme ) . addClass ( "ui-btn-down-" + theme ) ;
232+ updateButtonClass ( $btn , "ui-btn-up-" + theme , "ui-btn-down-" + theme , undefined , "down" ) ;
213233 }
214234 } else if ( evt === "vmousecancel" || evt === "vmouseup" ) {
215- $btn . removeClass ( "ui-btn-down-" + theme ) . addClass ( "ui-btn-up-" + theme ) ;
235+ updateButtonClass ( $btn , "ui-btn-down-" + theme , "ui-btn-up-" + theme , undefined , "up" ) ;
216236 } else if ( evt === "vmouseover" || evt === "focus" ) {
217237 if ( isTouchEvent ) {
218238 // Use a short delay to determine if the user is scrolling before highlighting
219239 foc = setTimeout ( function ( ) {
220- $btn . removeClass ( "ui-btn-up-" + theme ) . addClass ( "ui-btn-hover-" + theme ) ;
240+ updateButtonClass ( $btn , "ui-btn-up-" + theme , "ui-btn-hover-" + theme , true , "" ) ;
221241 } , hoverDelay ) ;
222242 } else {
223- $btn . removeClass ( "ui-btn-up-" + theme ) . addClass ( "ui-btn-hover-" + theme ) ;
243+ updateButtonClass ( $btn , "ui-btn-up-" + theme , "ui-btn-hover-" + theme , true , "" ) ;
224244 }
225245 } else if ( evt === "vmouseout" || evt === "blur" || evt === "scrollstart" ) {
226- $btn . removeClass ( "ui-btn-hover-" + theme + " ui-btn-down-" + theme ) . addClass ( "ui-btn-up-" + theme ) ;
246+ updateButtonClass ( $btn , "ui-btn-hover-" + theme + " ui-btn-down-" + theme , "ui-btn-up-" + theme , false , "up" ) ;
227247 if ( hov ) {
228248 clearTimeout ( hov ) ;
229249 }
0 commit comments