@@ -26,7 +26,6 @@ $.widget( "ui.menu", {
26
26
}
27
27
} ,
28
28
_create : function ( ) {
29
- var self = this ;
30
29
this . activeMenu = this . element ;
31
30
this . menuId = this . element . attr ( "id" ) || "ui-menu-" + idIncrement ++ ;
32
31
if ( this . element . find ( ".ui-icon" ) . length ) {
@@ -40,11 +39,11 @@ $.widget( "ui.menu", {
40
39
} )
41
40
// need to catch all clicks on disabled menu
42
41
// not possible through _bind
43
- . bind ( "click.menu" , function ( event ) {
44
- if ( self . options . disabled ) {
42
+ . bind ( "click.menu" , $ . proxy ( function ( event ) {
43
+ if ( this . options . disabled ) {
45
44
event . preventDefault ( ) ;
46
45
}
47
- } ) ;
46
+ } , this ) ) ;
48
47
this . _bind ( {
49
48
"click .ui-menu-item:has(a)" : function ( event ) {
50
49
event . stopImmediatePropagation ( ) ;
@@ -76,70 +75,70 @@ $.widget( "ui.menu", {
76
75
"keydown" : function ( event ) {
77
76
switch ( event . keyCode ) {
78
77
case $ . ui . keyCode . PAGE_UP :
79
- self . previousPage ( event ) ;
78
+ this . previousPage ( event ) ;
80
79
event . preventDefault ( ) ;
81
80
event . stopImmediatePropagation ( ) ;
82
81
break ;
83
82
case $ . ui . keyCode . PAGE_DOWN :
84
- self . nextPage ( event ) ;
83
+ this . nextPage ( event ) ;
85
84
event . preventDefault ( ) ;
86
85
event . stopImmediatePropagation ( ) ;
87
86
break ;
88
87
case $ . ui . keyCode . HOME :
89
- self . _move ( "first" , "first" , event ) ;
88
+ this . _move ( "first" , "first" , event ) ;
90
89
event . preventDefault ( ) ;
91
90
event . stopImmediatePropagation ( ) ;
92
91
break ;
93
92
case $ . ui . keyCode . END :
94
- self . _move ( "last" , "last" , event ) ;
93
+ this . _move ( "last" , "last" , event ) ;
95
94
event . preventDefault ( ) ;
96
95
event . stopImmediatePropagation ( ) ;
97
96
break ;
98
97
case $ . ui . keyCode . UP :
99
- self . previous ( event ) ;
98
+ this . previous ( event ) ;
100
99
event . preventDefault ( ) ;
101
100
event . stopImmediatePropagation ( ) ;
102
101
break ;
103
102
case $ . ui . keyCode . DOWN :
104
- self . next ( event ) ;
103
+ this . next ( event ) ;
105
104
event . preventDefault ( ) ;
106
105
event . stopImmediatePropagation ( ) ;
107
106
break ;
108
107
case $ . ui . keyCode . LEFT :
109
- if ( self . collapse ( event ) ) {
108
+ if ( this . collapse ( event ) ) {
110
109
event . stopImmediatePropagation ( ) ;
111
110
}
112
111
event . preventDefault ( ) ;
113
112
break ;
114
113
case $ . ui . keyCode . RIGHT :
115
- if ( self . expand ( event ) ) {
114
+ if ( this . expand ( event ) ) {
116
115
event . stopImmediatePropagation ( ) ;
117
116
}
118
117
event . preventDefault ( ) ;
119
118
break ;
120
119
case $ . ui . keyCode . ENTER :
121
- if ( self . active . children ( "a[aria-haspopup='true']" ) . length ) {
122
- if ( self . expand ( event ) ) {
120
+ if ( this . active . children ( "a[aria-haspopup='true']" ) . length ) {
121
+ if ( this . expand ( event ) ) {
123
122
event . stopImmediatePropagation ( ) ;
124
123
}
125
124
}
126
125
else {
127
- self . select ( event ) ;
126
+ this . select ( event ) ;
128
127
event . stopImmediatePropagation ( ) ;
129
128
}
130
129
event . preventDefault ( ) ;
131
130
break ;
132
131
case $ . ui . keyCode . ESCAPE :
133
- if ( self . collapse ( event ) ) {
132
+ if ( this . collapse ( event ) ) {
134
133
event . stopImmediatePropagation ( ) ;
135
134
}
136
135
event . preventDefault ( ) ;
137
136
break ;
138
137
default :
139
138
event . stopPropagation ( ) ;
140
- clearTimeout ( self . filterTimer ) ;
139
+ clearTimeout ( this . filterTimer ) ;
141
140
var match ,
142
- prev = self . previousFilter || "" ,
141
+ prev = this . previousFilter || "" ,
143
142
character = String . fromCharCode ( event . keyCode ) ,
144
143
skip = false ;
145
144
@@ -151,30 +150,30 @@ $.widget( "ui.menu", {
151
150
function escape ( value ) {
152
151
return value . replace ( / [ - [ \] { } ( ) * + ? . , \\ ^ $ | # \s ] / g , "\\$&" ) ;
153
152
}
154
- match = self . activeMenu . children ( ".ui-menu-item" ) . filter ( function ( ) {
153
+ match = this . activeMenu . children ( ".ui-menu-item" ) . filter ( function ( ) {
155
154
return new RegExp ( "^" + escape ( character ) , "i" )
156
155
. test ( $ ( this ) . children ( "a" ) . text ( ) ) ;
157
156
} ) ;
158
- match = skip && match . index ( self . active . next ( ) ) != - 1 ? self . active . nextAll ( ".ui-menu-item" ) : match ;
157
+ match = skip && match . index ( this . active . next ( ) ) != - 1 ? this . active . nextAll ( ".ui-menu-item" ) : match ;
159
158
if ( ! match . length ) {
160
159
character = String . fromCharCode ( event . keyCode ) ;
161
- match = self . activeMenu . children ( ".ui-menu-item" ) . filter ( function ( ) {
160
+ match = this . activeMenu . children ( ".ui-menu-item" ) . filter ( function ( ) {
162
161
return new RegExp ( "^" + escape ( character ) , "i" )
163
162
. test ( $ ( this ) . children ( "a" ) . text ( ) ) ;
164
163
} ) ;
165
164
}
166
165
if ( match . length ) {
167
- self . focus ( event , match ) ;
166
+ this . focus ( event , match ) ;
168
167
if ( match . length > 1 ) {
169
- self . previousFilter = character ;
170
- self . filterTimer = setTimeout ( function ( ) {
171
- delete self . previousFilter ;
168
+ this . previousFilter = character ;
169
+ this . filterTimer = this . _delay ( function ( ) {
170
+ delete this . previousFilter ;
172
171
} , 1000 ) ;
173
172
} else {
174
- delete self . previousFilter ;
173
+ delete this . previousFilter ;
175
174
}
176
175
} else {
177
- delete self . previousFilter ;
176
+ delete this . previousFilter ;
178
177
}
179
178
}
180
179
}
@@ -219,7 +218,7 @@ $.widget( "ui.menu", {
219
218
} ,
220
219
221
220
refresh : function ( ) {
222
- var self = this ,
221
+ var that = this ,
223
222
224
223
// initialize nested menus
225
224
submenus = this . element . find ( "ul:not(.ui-menu)" )
@@ -239,7 +238,7 @@ $.widget( "ui.menu", {
239
238
. attr ( "tabIndex" , - 1 )
240
239
. attr ( "role" , "menuitem" )
241
240
. attr ( "id" , function ( i ) {
242
- return self . element . attr ( "id" ) + "-" + i ;
241
+ return that . element . attr ( "id" ) + "-" + i ;
243
242
} ) ;
244
243
245
244
submenus . each ( function ( ) {
@@ -253,9 +252,6 @@ $.widget( "ui.menu", {
253
252
} ,
254
253
255
254
focus : function ( event , item ) {
256
- var nested ,
257
- self = this ;
258
-
259
255
this . blur ( event ) ;
260
256
261
257
if ( this . _hasScroll ( ) ) {
@@ -277,18 +273,18 @@ $.widget( "ui.menu", {
277
273
. children ( "a" )
278
274
. addClass ( "ui-state-focus" )
279
275
. end ( ) ;
280
- self . element . attr ( "aria-activedescendant" , self . active . children ( "a" ) . attr ( "id" ) ) ;
276
+ this . element . attr ( "aria-activedescendant" , this . active . children ( "a" ) . attr ( "id" ) ) ;
281
277
282
278
// highlight active parent menu item, if any
283
279
this . active . parent ( ) . closest ( ".ui-menu-item" ) . children ( "a:first" ) . addClass ( "ui-state-active" ) ;
284
280
285
- self . timer = setTimeout ( function ( ) {
286
- self . _close ( ) ;
287
- } , self . delay ) ;
281
+ this . timer = this . _delay ( function ( ) {
282
+ this . _close ( ) ;
283
+ } , this . delay ) ;
288
284
289
- nested = $ ( ">ul" , item ) ;
285
+ var nested = $ ( ">ul" , item ) ;
290
286
if ( nested . length && ( / ^ m o u s e / . test ( event . type ) ) ) {
291
- self . _startOpening ( nested ) ;
287
+ this . _startOpening ( nested ) ;
292
288
}
293
289
this . activeMenu = item . parent ( ) ;
294
290
@@ -317,11 +313,10 @@ $.widget( "ui.menu", {
317
313
return ;
318
314
}
319
315
320
- var self = this ;
321
- self . timer = setTimeout ( function ( ) {
322
- self . _close ( ) ;
323
- self . _open ( submenu ) ;
324
- } , self . delay ) ;
316
+ this . timer = this . _delay ( function ( ) {
317
+ this . _close ( ) ;
318
+ this . _open ( submenu ) ;
319
+ } , this . delay ) ;
325
320
} ,
326
321
327
322
_open : function ( submenu ) {
@@ -383,15 +378,14 @@ $.widget( "ui.menu", {
383
378
} ,
384
379
385
380
expand : function ( event ) {
386
- var self = this ,
387
- newItem = this . active && this . active . children ( "ul" ) . children ( "li" ) . first ( ) ;
381
+ var newItem = this . active && this . active . children ( "ul" ) . children ( "li" ) . first ( ) ;
388
382
389
383
if ( newItem && newItem . length ) {
390
384
this . _open ( newItem . parent ( ) ) ;
391
385
392
386
//timeout so Firefox will not hide activedescendant change in expanding submenu from AT
393
- setTimeout ( function ( ) {
394
- self . focus ( event , newItem ) ;
387
+ this . _delay ( function ( ) {
388
+ this . focus ( event , newItem ) ;
395
389
} , 20 ) ;
396
390
return true ;
397
391
}
0 commit comments