From: Brandon Aaron Date: Wed, 18 Mar 2009 17:55:07 +0000 (+0000) Subject: fix for #4374, gap in :hidden, :visible logic X-Git-Url: http://git.asbjorn.biz/?p=jquery.git;a=commitdiff_plain;h=2c31a1624f72df3987cd1d0d3605c359658986e5 fix for #4374, gap in :hidden, :visible logic --- diff --git a/src/selector.js b/src/selector.js index 2fa8e5d..517ea60 100644 --- a/src/selector.js +++ b/src/selector.js @@ -969,7 +969,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 42624f2..708204b 100644 --- a/test/unit/selector.js +++ b/test/unit/selector.js @@ -311,7 +311,7 @@ test("attributes", function() { }); test("pseudo (:) selectors", function() { - expect(70); + expect(78); t( "First Child", "p:first-child", ["firstp","sndp"] ); t( "Last Child", "p:last-child", ["sap"] ); t( "Only Child", "a:only-child", ["simon1","anchor1","yahoo","anchor2","liveLink1","liveLink2"] ); @@ -362,6 +362,21 @@ test("pseudo (:) selectors", function() { t( "Is Hidden", "#form input:hidden", ["text1","text2","radio1","radio2","check1","check2","hidden1","hidden2","name","search"] ); t( "Is Hidden", "#main:hidden", ["main"] ); t( "Is Hidden", "#dl:hidden", ["dl"] ); + + var $div = jQuery('#nothiddendivchild'); + $div.width(0).height(0); + t( "Is Hidden", '#nothiddendivchild:hidden', ['nothiddendivchild'] ); + t( "Is Not Hidden", '#nothiddendivchild:visible', [] ); + $div.width(1).height(0); + t( "Is Visible", '#nothiddendivchild:visible', ['nothiddendivchild'] ); + t( "Is Not Visible", '#nothiddendivchild:hidden', [] ); + $div.width(0).height(1); + t( "Is Visible", '#nothiddendivchild:visible', ['nothiddendivchild'] ); + t( "Is Not Visible", '#nothiddendivchild:hidden', [] ); + $div.width(1).height(1); + t( "Is Visible", '#nothiddendivchild:visible', ['nothiddendivchild'] ); + t( "Is Not Visible", '#nothiddendivchild:hidden', [] ); + $div.width('').height(''); t( "Check position filtering", "div#nothiddendiv:eq(0)", ["nothiddendiv"] ); t( "Check position filtering", "div#nothiddendiv:last", ["nothiddendiv"] );