aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKris Borchers <kris.borchers@gmail.com>2013-10-17 23:07:39 -0500
committerKris Borchers <kris.borchers@gmail.com>2013-10-18 22:14:49 -0500
commit52307ebadbca3f403549140e1d34f08bc07bf8ce (patch)
treea930c7da75c2cf3f749c71812ef1a94469620b04
parent14065dc23bb453b6c30138f225c9db728dd7e455 (diff)
downloadjquery-ui-52307ebadbca3f403549140e1d34f08bc07bf8ce.tar.gz
jquery-ui-52307ebadbca3f403549140e1d34f08bc07bf8ce.zip
Menu: More precise removal of ui-state-active class for easier CSS overrides. Fixes #9532 - Need a way in Menu to keep ui-state-active class on selected item
-rw-r--r--tests/unit/menu/menu_core.js13
-rw-r--r--ui/jquery.ui.menu.js4
2 files changed, 15 insertions, 2 deletions
diff --git a/tests/unit/menu/menu_core.js b/tests/unit/menu/menu_core.js
index 923d2961e..df039c9e4 100644
--- a/tests/unit/menu/menu_core.js
+++ b/tests/unit/menu/menu_core.js
@@ -45,4 +45,17 @@ asyncTest( "#9044: Autofocus issue with dialog opened from menu widget", functio
});
});
+asyncTest( "#9532: Need a way in Menu to keep ui-state-active class on selected item for Selectmenu", function() {
+ expect( 1 );
+ var element = $( "#menu1" ).menu(),
+ firstChild = element.children().eq( 0 );
+
+ element.menu( "focus", null, firstChild );
+ firstChild.addClass( "ui-state-active" );
+ setTimeout( function() {
+ ok( firstChild.is( ".ui-state-active" ), "ui-state-active improperly removed" );
+ start();
+ }, 500 );
+});
+
})( jQuery );
diff --git a/ui/jquery.ui.menu.js b/ui/jquery.ui.menu.js
index 059f80b30..b0ff38894 100644
--- a/ui/jquery.ui.menu.js
+++ b/ui/jquery.ui.menu.js
@@ -371,7 +371,7 @@ $.widget( "ui.menu", {
this._scrollIntoView( item );
this.active = item.first();
- focused = this.active.addClass( "ui-state-focus" );
+ focused = this.active.addClass( "ui-state-focus" ).removeClass( "ui-state-active" );
// Only update aria-activedescendant if there's a role
// otherwise we assume focus is managed elsewhere
if ( this.options.role ) {
@@ -498,7 +498,7 @@ $.widget( "ui.menu", {
.attr( "aria-hidden", "true" )
.attr( "aria-expanded", "false" )
.end()
- .find( ".ui-state-active" )
+ .find( ".ui-state-active" ).not( ".ui-state-focus" )
.removeClass( "ui-state-active" );
},