Attributes: Don't set the type attr hook at all outside of IE

This removes a needless function call in modern browsers.

Closes gh-4587
This commit is contained in:
Michał Gołębiowski-Owczarek 2020-01-13 19:22:08 +01:00 committed by GitHub
parent 437f389a24
commit 9e66fe9acf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -64,23 +64,7 @@ jQuery.extend( {
return ret == null ? undefined : ret;
},
attrHooks: {
type: {
set: function( elem, value ) {
// Support: IE <=11+
// An input loses its value after becoming a radio
if ( isIE && value === "radio" && nodeName( elem, "input" ) ) {
var val = elem.value;
elem.setAttribute( "type", value );
if ( val ) {
elem.value = val;
}
return value;
}
}
}
},
attrHooks: {},
removeAttr: function( elem, value ) {
var name,
@ -98,6 +82,23 @@ jQuery.extend( {
}
} );
// Support: IE <=11+
// An input loses its value after becoming a radio
if ( isIE ) {
jQuery.attrHooks.type = {
set: function( elem, value ) {
if ( value === "radio" && nodeName( elem, "input" ) ) {
var val = elem.value;
elem.setAttribute( "type", value );
if ( val ) {
elem.value = val;
}
return value;
}
}
};
}
jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( _i, name ) {
jQuery.attrHooks[ name ] = {
get: function( elem ) {