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