Mercurial > nebulaweb3
comparison default/node_modules/jquery/src/css/showHide.js @ 0:1d038bc9b3d2 default tip
Up:default
author | Liny <dev@neowd.com> |
---|---|
date | Sat, 31 May 2025 09:21:51 +0800 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:1d038bc9b3d2 |
---|---|
1 define( [ | |
2 "../core", | |
3 "../data/var/dataPriv", | |
4 "../css/var/isHiddenWithinTree" | |
5 ], function( jQuery, dataPriv, isHiddenWithinTree ) { | |
6 | |
7 "use strict"; | |
8 | |
9 var defaultDisplayMap = {}; | |
10 | |
11 function getDefaultDisplay( elem ) { | |
12 var temp, | |
13 doc = elem.ownerDocument, | |
14 nodeName = elem.nodeName, | |
15 display = defaultDisplayMap[ nodeName ]; | |
16 | |
17 if ( display ) { | |
18 return display; | |
19 } | |
20 | |
21 temp = doc.body.appendChild( doc.createElement( nodeName ) ); | |
22 display = jQuery.css( temp, "display" ); | |
23 | |
24 temp.parentNode.removeChild( temp ); | |
25 | |
26 if ( display === "none" ) { | |
27 display = "block"; | |
28 } | |
29 defaultDisplayMap[ nodeName ] = display; | |
30 | |
31 return display; | |
32 } | |
33 | |
34 function showHide( elements, show ) { | |
35 var display, elem, | |
36 values = [], | |
37 index = 0, | |
38 length = elements.length; | |
39 | |
40 // Determine new display value for elements that need to change | |
41 for ( ; index < length; index++ ) { | |
42 elem = elements[ index ]; | |
43 if ( !elem.style ) { | |
44 continue; | |
45 } | |
46 | |
47 display = elem.style.display; | |
48 if ( show ) { | |
49 | |
50 // Since we force visibility upon cascade-hidden elements, an immediate (and slow) | |
51 // check is required in this first loop unless we have a nonempty display value (either | |
52 // inline or about-to-be-restored) | |
53 if ( display === "none" ) { | |
54 values[ index ] = dataPriv.get( elem, "display" ) || null; | |
55 if ( !values[ index ] ) { | |
56 elem.style.display = ""; | |
57 } | |
58 } | |
59 if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) { | |
60 values[ index ] = getDefaultDisplay( elem ); | |
61 } | |
62 } else { | |
63 if ( display !== "none" ) { | |
64 values[ index ] = "none"; | |
65 | |
66 // Remember what we're overwriting | |
67 dataPriv.set( elem, "display", display ); | |
68 } | |
69 } | |
70 } | |
71 | |
72 // Set the display of the elements in a second loop to avoid constant reflow | |
73 for ( index = 0; index < length; index++ ) { | |
74 if ( values[ index ] != null ) { | |
75 elements[ index ].style.display = values[ index ]; | |
76 } | |
77 } | |
78 | |
79 return elements; | |
80 } | |
81 | |
82 jQuery.fn.extend( { | |
83 show: function() { | |
84 return showHide( this, true ); | |
85 }, | |
86 hide: function() { | |
87 return showHide( this ); | |
88 }, | |
89 toggle: function( state ) { | |
90 if ( typeof state === "boolean" ) { | |
91 return state ? this.show() : this.hide(); | |
92 } | |
93 | |
94 return this.each( function() { | |
95 if ( isHiddenWithinTree( this ) ) { | |
96 jQuery( this ).show(); | |
97 } else { | |
98 jQuery( this ).hide(); | |
99 } | |
100 } ); | |
101 } | |
102 } ); | |
103 | |
104 return showHide; | |
105 } ); |