mirror of
https://github.com/jquery/jquery.git
synced 2026-02-01 23:24:55 -05:00
Attrs: Force reflow in select value setter
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 props. try...catch statment is required for bug isolation Fixes #2252
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user