From: Michał Gołębiowski-Owczarek Date: Mon, 13 Jan 2020 18:22:08 +0000 (+0100) Subject: Attributes: Don't set the type attr hook at all outside of IE X-Git-Tag: 4.0.0-beta~214 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=9e66fe9acf0ef27681f5a21149fc61678f791641;p=jquery.git 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 --- diff --git a/src/attributes/attr.js b/src/attributes/attr.js index cd34860e1..2773a383c 100644 --- a/src/attributes/attr.js +++ b/src/attributes/attr.js @@ -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 ) {