@@ -274,11 +274,13 @@ $.widget("ui.selectmenu", {
274
274
. data ( 'optionClasses' , selectOptionData [ i ] . classes || '' )
275
275
. bind ( "mouseup.selectmenu" , function ( event ) {
276
276
if ( self . _safemouseup && ! self . _disabled ( event . currentTarget ) && ! self . _disabled ( $ ( event . currentTarget ) . parents ( "ul>li." + self . widgetBaseClass + "-group " ) ) ) {
277
- var changed = $ ( this ) . data ( 'index' ) != self . _selectedIndex ( ) ;
278
- self . index ( $ ( this ) . data ( 'index' ) ) ;
279
- self . select ( event ) ;
280
- if ( changed ) {
281
- self . change ( event ) ;
277
+ var oldIdx = self . _selectedIndex ( ) , newIdx = t . data ( 'index' ) ;
278
+ if ( self . select ( event , oldIdx , newIdx ) !== false ) {
279
+ var changed = oldIdx != newIdx ;
280
+ if ( changed ) {
281
+ self . index ( t . data ( 'index' ) ) ;
282
+ self . change ( event ) ;
283
+ }
282
284
}
283
285
self . close ( event , true ) ;
284
286
}
@@ -484,12 +486,13 @@ $.widget("ui.selectmenu", {
484
486
} ,
485
487
486
488
// returns some usefull information, called by callbacks only
487
- _uiHash : function ( ) {
488
- var index = this . index ( ) ;
489
+ _uiHash : function ( index ) {
490
+ var idx = index || this . index ( ) ;
491
+ var opt = $ ( "option" , this . element ) . eq ( idx ) ;
489
492
return {
490
493
index : index ,
491
- option : $ ( "option" , this . element ) . get ( index ) ,
492
- value : this . element [ 0 ] . value
494
+ option : opt ,
495
+ value : opt . attr ( ' value' )
493
496
} ;
494
497
} ,
495
498
@@ -538,9 +541,9 @@ $.widget("ui.selectmenu", {
538
541
this . _trigger ( "change" , event , this . _uiHash ( ) ) ;
539
542
} ,
540
543
541
- select : function ( event ) {
544
+ select : function ( event , oldIdx , newIdx ) {
542
545
if ( this . _disabled ( event . currentTarget ) ) { return false ; }
543
- this . _trigger ( "select" , event , this . _uiHash ( ) ) ;
546
+ return this . _trigger ( "select" , event , { oldOpt : this . _uiHash ( oldIdx ) , newOpt : this . _uiHash ( newIdx ) } ) ;
544
547
} ,
545
548
546
549
_closeOthers : function ( event ) {
0 commit comments