diff --git a/src/selector.js b/src/selector.js index 32f48c41f..b404064a9 100644 --- a/src/selector.js +++ b/src/selector.js @@ -977,7 +977,7 @@ jQuery.expr = Sizzle.selectors; jQuery.expr[":"] = jQuery.expr.filters; Sizzle.selectors.filters.hidden = function(elem){ - return elem.offsetWidth === 0 || elem.offsetHeight === 0; + return elem.offsetWidth === 0 && elem.offsetHeight === 0; }; Sizzle.selectors.filters.visible = function(elem){ diff --git a/test/unit/selector.js b/test/unit/selector.js index 708204b6e..3e70481af 100644 --- a/test/unit/selector.js +++ b/test/unit/selector.js @@ -364,6 +364,7 @@ test("pseudo (:) selectors", function() { t( "Is Hidden", "#dl:hidden", ["dl"] ); var $div = jQuery('#nothiddendivchild'); + $div.css({ fontSize: 0, lineHeight: 0 });// IE also needs to set font-size and line-height to 0 $div.width(0).height(0); t( "Is Hidden", '#nothiddendivchild:hidden', ['nothiddendivchild'] ); t( "Is Not Hidden", '#nothiddendivchild:visible', [] ); @@ -376,7 +377,7 @@ test("pseudo (:) selectors", function() { $div.width(1).height(1); t( "Is Visible", '#nothiddendivchild:visible', ['nothiddendivchild'] ); t( "Is Not Visible", '#nothiddendivchild:hidden', [] ); - $div.width('').height(''); + $div.width('').height('').css({ fontSize: '', lineHeight: '' }); t( "Check position filtering", "div#nothiddendiv:eq(0)", ["nothiddendiv"] ); t( "Check position filtering", "div#nothiddendiv:last", ["nothiddendiv"] );