mirror of
https://github.com/jquery/jquery.git
synced 2024-11-23 02:54:22 +00: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:
parent
92cbf5362c
commit
9fe051d57e
@ -118,21 +118,37 @@ jQuery.extend({
|
|||||||
set: function( elem, value ) {
|
set: function( elem, value ) {
|
||||||
var optionSet, option,
|
var optionSet, option,
|
||||||
options = elem.options,
|
options = elem.options,
|
||||||
values = jQuery.makeArray( value ),
|
|
||||||
i = options.length;
|
i = options.length;
|
||||||
|
|
||||||
while ( i-- ) {
|
while ( i-- ) {
|
||||||
option = options[ 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 ) {
|
if ( !optionSet ) {
|
||||||
elem.selectedIndex = -1;
|
elem.selectedIndex = -1;
|
||||||
}
|
}
|
||||||
return values;
|
|
||||||
|
return options;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user