diff options
-rw-r--r-- | src/attributes/val.js | 26 |
1 files changed, 21 insertions, 5 deletions
diff --git a/src/attributes/val.js b/src/attributes/val.js index 16296a631..b01eebff7 100644 --- a/src/attributes/val.js +++ b/src/attributes/val.js @@ -118,21 +118,37 @@ jQuery.extend({ set: function( elem, value ) { var optionSet, option, options = elem.options, - values = jQuery.makeArray( value ), i = options.length; while ( i-- ) { option = options[ i ]; - if ( (option.selected = jQuery.inArray( jQuery(option).val(), values ) >= 0) ) { - optionSet = true; + + if ( jQuery.valHooks.option.get( option ) === value ) { + + // Support: IE6 + // When new option element is added to select box we need to + // force reflow of newly added node in order to workaround delay + // of initialization properties + try { + option.selected = optionSet = true; + + } catch ( _ ) { + + // Will be executed only in IE6 + option.scrollHeight; + } + + } else { + option.selected = false; } } - // force browsers to behave consistently when non-matching value is set + // Force browsers to behave consistently when non-matching value is set if ( !optionSet ) { elem.selectedIndex = -1; } - return values; + + return options; } } } |