From e2b5123f37449bacb01e564bfc17897f07537ffa Mon Sep 17 00:00:00 2001 From: Felix Nagel Date: Fri, 14 Dec 2012 18:03:49 +0100 Subject: [PATCH] Selectmenu: introduce _setText helper function to improve handling of empty strings --- ui/jquery.ui.selectmenu.js | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/ui/jquery.ui.selectmenu.js b/ui/jquery.ui.selectmenu.js index 2e21391bd..6427b6080 100644 --- a/ui/jquery.ui.selectmenu.js +++ b/ui/jquery.ui.selectmenu.js @@ -84,10 +84,10 @@ $.widget( "ui.selectmenu", { })); this.buttonText = $( "", { - "class": "ui-selectmenu-text" , - html: this.element.find( "option:selected" ).text() || " " + "class": "ui-selectmenu-text" }) .appendTo( this.button ); + this._setText( this.buttonText, this.element.find( "option:selected" ).text() ); // wrap and insert new button this.buttonWrap = $( "", { @@ -260,17 +260,23 @@ $.widget( "ui.selectmenu", { }, _renderItem: function( ul, item ) { - var li = $( "
  • " ).data( "ui-selectmenu-item", item ); + var li = $( "
  • " ).data( "ui-selectmenu-item", item ), + a = $( "", { href: "#" }); + if ( item.disabled ) { li.addClass( "ui-state-disabled" ); } - li.append( $( "", { - html: item.label, - href: "#" - }) - ); + this._setText( a, item.label ); - return li.appendTo( ul ); + return li.append( a ).appendTo( ul ); + }, + + _setText: function( element, value ) { + if ( value ) { + element.text( value ); + } else { + element.html( " " ); + } }, _move: function( direction, event ) { @@ -388,8 +394,7 @@ $.widget( "ui.selectmenu", { }, _setSelected: function( item ) { - // update button text - this.buttonText.html( item.label ); + this._setText( this.buttonText, item.label ); // change ARIA attr this.menuItems.find( "a" ).attr( "aria-selected", false ); this.menuItems.eq( item.index ).find( "a" ).attr( "aria-selected", true ); @@ -437,7 +442,7 @@ $.widget( "ui.selectmenu", { element: option, index: index, value: option.attr( "value" ), - label: option.text() || " ", + label: option.text(), optgroup: optgroup.attr( "label" ) || "", disabled: optgroup.attr( "disabled" ) || option.attr( "disabled" ) });