@@ -23,7 +23,7 @@ $.widget("ui.menu", {
23
23
"aria-activedescendant" : "ui-active-menuitem"
24
24
} )
25
25
. bind ( "click.menu" , function ( event ) {
26
- if ( self . options . disabled ) {
26
+ if ( self . options . disabled ) {
27
27
return false ;
28
28
}
29
29
if ( ! $ ( event . target ) . closest ( ".ui-menu-item a" ) . length ) {
@@ -32,7 +32,25 @@ $.widget("ui.menu", {
32
32
// temporary
33
33
event . preventDefault ( ) ;
34
34
self . select ( event ) ;
35
- } ) ;
35
+ } )
36
+ . bind ( "mouseover.menu" , function ( event ) {
37
+ if ( self . options . disabled ) {
38
+ return ;
39
+ }
40
+ var target = $ ( event . target ) . closest ( ".ui-menu-item" ) ;
41
+ if ( target . length && target . parent ( ) [ 0 ] === self . element [ 0 ] ) {
42
+ self . activate ( event , target ) ;
43
+ }
44
+ } )
45
+ . bind ( "mouseout.menu" , function ( event ) {
46
+ if ( self . options . disabled ) {
47
+ return ;
48
+ }
49
+ var target = $ ( event . target ) . closest ( ".ui-menu-item" ) ;
50
+ if ( target . length && target . parent ( ) [ 0 ] === self . element [ 0 ] ) {
51
+ self . deactivate ( event ) ;
52
+ }
53
+ } ) ; ;
36
54
this . refresh ( ) ;
37
55
38
56
if ( ! this . options . input ) {
@@ -91,29 +109,14 @@ $.widget("ui.menu", {
91
109
} ,
92
110
93
111
refresh : function ( ) {
94
- var self = this ;
95
-
96
112
// don't refresh list items that are already adapted
97
113
var items = this . element . children ( "li:not(.ui-menu-item):has(a)" )
98
114
. addClass ( "ui-menu-item" )
99
115
. attr ( "role" , "menuitem" ) ;
100
116
101
117
items . children ( "a" )
102
118
. addClass ( "ui-corner-all" )
103
- . attr ( "tabIndex" , - 1 )
104
- // mouseenter doesn't work with event delegation
105
- . bind ( "mouseenter.menu" , function ( event ) {
106
- if ( self . options . disabled ) {
107
- return ;
108
- }
109
- self . activate ( event , $ ( this ) . parent ( ) ) ;
110
- } )
111
- . bind ( "mouseleave.menu" , function ( ) {
112
- if ( self . options . disabled ) {
113
- return ;
114
- }
115
- self . deactivate ( ) ;
116
- } ) ;
119
+ . attr ( "tabIndex" , - 1 ) ;
117
120
} ,
118
121
119
122
activate : function ( event , item ) {
@@ -136,13 +139,13 @@ $.widget("ui.menu", {
136
139
this . _trigger ( "focus" , event , { item : item } ) ;
137
140
} ,
138
141
139
- deactivate : function ( ) {
142
+ deactivate : function ( event ) {
140
143
if ( ! this . active ) { return ; }
141
144
142
145
this . active . children ( "a" )
143
146
. removeClass ( "ui-state-hover" )
144
147
. removeAttr ( "id" ) ;
145
- this . _trigger ( "blur" ) ;
148
+ this . _trigger ( "blur" , event ) ;
146
149
this . active = null ;
147
150
} ,
148
151
0 commit comments