]> source.dussan.org Git - jquery-ui.git/commitdiff
improved: disable optgroups
authorFelix Nagel <info@felixnagel.com>
Fri, 23 Nov 2012 22:10:26 +0000 (23:10 +0100)
committerFelix Nagel <info@felixnagel.com>
Fri, 23 Nov 2012 22:10:26 +0000 (23:10 +0100)
ui/jquery.ui.selectmenu.js

index 65eadc5ec7c3a104d0eeb2b2200266a8e43d01be..0418327442433014c9c516fbccda4d155f036284 100644 (file)
@@ -721,7 +721,7 @@ $.widget("ui.selectmenu", {
                                this._setOption( 'disabled', true );
                        } else {
                                if ( type == "optgroup" ) {
-                                       this._disableOptgroup( index );
+                                       this._toggleOptgroup( index, false );
                                } else {
                                        this._disableOption( index );
                                }
@@ -734,7 +734,7 @@ $.widget("ui.selectmenu", {
                                this._setOption( 'disabled', false );
                        } else {
                                if ( type == "optgroup" ) {
-                                       this._enableOptgroup( index );
+                                       this._toggleOptgroup( index, true );
                                } else {
                                        this._enableOption( index );
                                }
@@ -764,22 +764,18 @@ $.widget("ui.selectmenu", {
                        }
        },
 
-       _disableOptgroup: function( index ) {
+       // true = enabled, false = disabled
+       _toggleOptgroup: function( index, flag ) {
                        var optGroupElem = this.list.find( 'li.ui-selectmenu-group-' + index );
-                       if ( optGroupElem ) {
+                       if ( optGroupElem ) {                           
                                optGroupElem
-                                       .addClass( this.namespace + '-state-disabled' )
-                                       .attr( "aria-disabled", true );
-                               this.element.find( "optgroup" ).eq( index ).attr( "disabled", "disabled" );
-                       }
-       },
-
-       _enableOptgroup: function( index ) {
-                       var optGroupElem = this.list.find( 'li.ui-selectmenu-group-' + index );
-                       if ( optGroupElem ) {
-                               optGroupElem.removeClass( this.namespace + '-state-disabled' )
-                                       .attr( "aria-disabled", false);
-                               this.element.find( "optgroup" ).eq( index ).removeAttr( "disabled" );
+                                       .toggleClass( this.namespace + '-state-disabled', flag )
+                                       .attr( "aria-disabled", !flag );
+                               if ( flag ) {
+                                       this.element.find( "optgroup" ).eq( index ).attr( "disabled", "disabled" );
+                               } else {
+                                       this.element.find( "optgroup" ).eq( index ).removeAttr( "disabled" );
+                               }
                        }
        },