Show More
Commit Description:
utf8mb4
Commit Description:
utf8mb4
References:
File last commit:
Show/Diff file:
Action:
node_modules/jquery/src/css/showHide.js
| 105 lines
| 2.2 KiB
| application/javascript
| JavascriptLexer
|
r789 | define( [ | |||
"../core", | ||||
"../data/var/dataPriv", | ||||
"../css/var/isHiddenWithinTree" | ||||
], function( jQuery, dataPriv, isHiddenWithinTree ) { | ||||
"use strict"; | ||||
var defaultDisplayMap = {}; | ||||
function getDefaultDisplay( elem ) { | ||||
var temp, | ||||
doc = elem.ownerDocument, | ||||
nodeName = elem.nodeName, | ||||
display = defaultDisplayMap[ nodeName ]; | ||||
if ( display ) { | ||||
return display; | ||||
} | ||||
temp = doc.body.appendChild( doc.createElement( nodeName ) ); | ||||
display = jQuery.css( temp, "display" ); | ||||
temp.parentNode.removeChild( temp ); | ||||
if ( display === "none" ) { | ||||
display = "block"; | ||||
} | ||||
defaultDisplayMap[ nodeName ] = display; | ||||
return display; | ||||
} | ||||
function showHide( elements, show ) { | ||||
var display, elem, | ||||
values = [], | ||||
index = 0, | ||||
length = elements.length; | ||||
// Determine new display value for elements that need to change | ||||
for ( ; index < length; index++ ) { | ||||
elem = elements[ index ]; | ||||
if ( !elem.style ) { | ||||
continue; | ||||
} | ||||
display = elem.style.display; | ||||
if ( show ) { | ||||
// Since we force visibility upon cascade-hidden elements, an immediate (and slow) | ||||
// check is required in this first loop unless we have a nonempty display value (either | ||||
// inline or about-to-be-restored) | ||||
if ( display === "none" ) { | ||||
values[ index ] = dataPriv.get( elem, "display" ) || null; | ||||
if ( !values[ index ] ) { | ||||
elem.style.display = ""; | ||||
} | ||||
} | ||||
if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) { | ||||
values[ index ] = getDefaultDisplay( elem ); | ||||
} | ||||
} else { | ||||
if ( display !== "none" ) { | ||||
values[ index ] = "none"; | ||||
// Remember what we're overwriting | ||||
dataPriv.set( elem, "display", display ); | ||||
} | ||||
} | ||||
} | ||||
// Set the display of the elements in a second loop to avoid constant reflow | ||||
for ( index = 0; index < length; index++ ) { | ||||
if ( values[ index ] != null ) { | ||||
elements[ index ].style.display = values[ index ]; | ||||
} | ||||
} | ||||
return elements; | ||||
} | ||||
jQuery.fn.extend( { | ||||
show: function() { | ||||
return showHide( this, true ); | ||||
}, | ||||
hide: function() { | ||||
return showHide( this ); | ||||
}, | ||||
toggle: function( state ) { | ||||
if ( typeof state === "boolean" ) { | ||||
return state ? this.show() : this.hide(); | ||||
} | ||||
return this.each( function() { | ||||
if ( isHiddenWithinTree( this ) ) { | ||||
jQuery( this ).show(); | ||||
} else { | ||||
jQuery( this ).hide(); | ||||
} | ||||
} ); | ||||
} | ||||
} ); | ||||
return showHide; | ||||
} ); | ||||