From 171be28a220d8204e4e244d7ba5fa9f4ce42d16b Mon Sep 17 00:00:00 2001 From: Mat Marquis Date: Fri, 30 Dec 2011 15:24:32 -0500 Subject: [PATCH] Added slight delay before application of hover/down classes on touch devices, to prevent unintentional hover-ish behavior when the user intent is to scroll. --- js/jquery.mobile.buttonMarkup.js | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/js/jquery.mobile.buttonMarkup.js b/js/jquery.mobile.buttonMarkup.js index a9d4f11c..0a5e8ecd 100755 --- a/js/jquery.mobile.buttonMarkup.js +++ b/js/jquery.mobile.buttonMarkup.js @@ -128,6 +128,8 @@ function closestEnabledButton( element ) { } var attachEvents = function() { + var hoverDelay = 200, + hov, foc; $( document ).bind( { "vmousedown": function( event ) { var btn = closestEnabledButton( event.target ), @@ -136,7 +138,9 @@ var attachEvents = function() { if ( btn ) { $btn = $( btn ); theme = $btn.attr( "data-" + $.mobile.ns + "theme" ); - $btn.removeClass( "ui-btn-up-" + theme ).addClass( "ui-btn-down-" + theme ); + hov = setTimeout(function() { + $btn.removeClass( "ui-btn-up-" + theme ).addClass( "ui-btn-down-" + theme ); + }, hoverDelay ); } }, "vmousecancel vmouseup": function( event ) { @@ -156,17 +160,21 @@ var attachEvents = function() { if ( btn ) { $btn = $( btn ); theme = $btn.attr( "data-" + $.mobile.ns + "theme" ); - $btn.removeClass( "ui-btn-up-" + theme ).addClass( "ui-btn-hover-" + theme ); + foc = setTimeout(function() { + $btn.removeClass( "ui-btn-up-" + theme ).addClass( "ui-btn-hover-" + theme ); + }, hoverDelay ); } }, "vmouseout blur scrollstart": function( event ) { var btn = closestEnabledButton( event.target ), $btn, theme; - if ( btn ) { $btn = $( btn ); theme = $btn.attr( "data-" + $.mobile.ns + "theme" ); $btn.removeClass( "ui-btn-hover-" + theme + " ui-btn-down-" + theme ).addClass( "ui-btn-up-" + theme ); + + hov && clearTimeout( hov ); + foc && clearTimeout( foc ); } } });