@@ -132,8 +132,19 @@ $.widget( "ui.selectmenu", {
132132 this . menuInstance = this . menu . menu ( {
133133 role : "listbox" ,
134134 select : function ( event , ui ) {
135+ var item = ui . item . data ( "ui-selectmenu-item" ) ,
136+ oldIndex = that . element [ 0 ] . selectedIndex ;
137+
138+ // Change native select element
139+ that . element [ 0 ] . selectedIndex = item . index ;
140+
135141 event . preventDefault ( ) ;
136- that . _select ( ui . item . data ( "ui-selectmenu-item" ) , event ) ;
142+ that . _select ( item , event ) ;
143+ if ( item . index !== oldIndex ) {
144+ that . _trigger ( "change" , event , { item : item } ) ;
145+ }
146+
147+ that . close ( event ) ;
137148 } ,
138149 focus : function ( event , ui ) {
139150 var item = ui . item . data ( "ui-selectmenu-item" ) ;
@@ -355,7 +366,10 @@ $.widget( "ui.selectmenu", {
355366 }
356367 } ,
357368 change : function ( event ) {
358- this . _select ( this . items [ this . element [ 0 ] . selectedIndex ] , event ) ;
369+ var item = this . items [ this . element [ 0 ] . selectedIndex ] ;
370+
371+ this . _select ( item , event ) ;
372+ this . _trigger ( "change" , event , { item : item } ) ;
359373 } ,
360374 keydown : function ( event ) {
361375 if ( ! this . options . nativeMenu ) {
@@ -430,22 +444,12 @@ $.widget( "ui.selectmenu", {
430444 } ,
431445
432446 _select : function ( item , event ) {
433- var oldIndex = this . element [ 0 ] . selectedIndex ;
434-
435- if ( ! this . options . nativeMenu ) {
436- // Change native select element
437- this . element [ 0 ] . selectedIndex = item . index ;
438- this . _setAria ( item ) ;
439- }
440-
441447 this . _setText ( this . buttonText , item . label ) ;
442448 this . _trigger ( "select" , event , { item : item } ) ;
443449
444- if ( item . index !== oldIndex ) {
445- this . _trigger ( "change" , event , { item : item } ) ;
450+ if ( ! this . options . nativeMenu ) {
451+ this . _setAria ( item ) ;
446452 }
447-
448- this . close ( event ) ;
449453 } ,
450454
451455 _setAria : function ( item ) {
@@ -510,11 +514,11 @@ $.widget( "ui.selectmenu", {
510514
511515 _toggleAttr : function ( ) {
512516 this . element . attr ( "aria-expanded" , this . isOpen ) ;
513- this . button
514- . toggleClass ( "ui-corner-top" , this . isOpen )
515- . toggleClass ( "ui-corner-all" , ! this . isOpen ) ;
516517
517518 if ( ! this . options . nativeMenu ) {
519+ this . button
520+ . toggleClass ( "ui-corner-top" , this . isOpen )
521+ . toggleClass ( "ui-corner-all" , ! this . isOpen ) ;
518522 this . menuWrap . toggleClass ( "ui-selectmenu-open" , this . isOpen ) ;
519523 this . menu . attr ( "aria-hidden" , ! this . isOpen ) ;
520524 }
0 commit comments