Skip to content

Commit ecf52b9

Browse files
committed
CSS: fix visible/hidden for IE6/7
1 parent 9e2f55f commit ecf52b9

File tree

2 files changed

+24
-5
lines changed

2 files changed

+24
-5
lines changed

src/css/hiddenVisibleSelectors.js

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,32 @@ define( [
55
"../css"
66
], function( jQuery, support ) {
77

8+
function getDisplay( elem ) {
9+
return elem.style && elem.style.display || jQuery.css( elem, "display" );
10+
}
11+
12+
function filterHidden( elem ) {
13+
while ( elem && elem.nodeType === 1 ) {
14+
if ( getDisplay( elem ) === "none" || elem.type === "hidden" ) {
15+
return true;
16+
}
17+
elem = elem.parentNode;
18+
}
19+
return false;
20+
}
21+
822
jQuery.expr.filters.hidden = function( elem ) {
9-
return !jQuery.expr.filters.visible( elem );
23+
24+
// Support: Opera <= 12.12
25+
// Opera reports offsetWidths and offsetHeights less than zero on some elements
26+
return support.reliableHiddenOffsets() ?
27+
( elem.offsetWidth <= 0 && elem.offsetHeight <= 0 &&
28+
!elem.getClientRects().length ) :
29+
filterHidden( elem );
1030
};
1131

1232
jQuery.expr.filters.visible = function( elem ) {
13-
return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length ) &&
14-
( support.reliableHiddenOffsets() ||
15-
( ( elem.style && elem.style.display ) || jQuery.css( elem, "display" ) ) !== "none" );
33+
return !jQuery.expr.filters.hidden( elem );
1634
};
1735

1836
} );

src/css/support.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,8 @@ define( [
159159
div.innerHTML = "<table><tr><td></td><td>t</td></tr></table>";
160160
contents = div.getElementsByTagName( "td" );
161161
contents[ 0 ].style.cssText = "margin:0;border:0;padding:0;display:none";
162-
reliableHiddenOffsetsVal = contents[ 0 ].offsetHeight === 0;
162+
reliableHiddenOffsetsVal = contents[ 0 ].offsetHeight === 0 &&
163+
contents[ 0 ].getClientRects().length === 0;
163164
if ( reliableHiddenOffsetsVal ) {
164165
contents[ 0 ].style.display = "";
165166
contents[ 1 ].style.display = "none";

0 commit comments

Comments
 (0)