X-Git-Url: http://git.asbjorn.it/?a=blobdiff_plain;f=src%2Fselector.js;h=1f3ceb5c1fb32ca78b4432bbd53cccd91e9042f1;hb=bbf3334db107abf72cbb3247b68b7e40d9f2cdfe;hp=b404064a98e2df010f95ed34e6b3976256646b65;hpb=31b573185b7728fa74452fbecc515c6de94640a6;p=jquery.git diff --git a/src/selector.js b/src/selector.js index b404064..1f3ceb5 100644 --- a/src/selector.js +++ b/src/selector.js @@ -551,7 +551,7 @@ var Expr = Sizzle.selectors = { } else if ( name === "not" ) { var not = match[3]; - for ( var i = 0, l = not.length; i < l; i++ ) { + for ( i = 0, l = not.length; i < l; i++ ) { if ( not[i] === elem ) { return false; } @@ -565,13 +565,13 @@ var Expr = Sizzle.selectors = { switch (type) { case 'only': case 'first': - while (node = node.previousSibling) { + while ( (node = node.previousSibling) ) { if ( node.nodeType === 1 ) return false; } if ( type == 'first') return true; node = elem; case 'last': - while (node = node.nextSibling) { + while ( (node = node.nextSibling) ) { if ( node.nodeType === 1 ) return false; } return true; @@ -977,11 +977,17 @@ jQuery.expr = Sizzle.selectors; jQuery.expr[":"] = jQuery.expr.filters; Sizzle.selectors.filters.hidden = function(elem){ - return elem.offsetWidth === 0 && elem.offsetHeight === 0; + var width = elem.offsetWidth, height = elem.offsetHeight, + force = /^tr$/i.test( elem.tagName ); // ticket #4512 + return ( width === 0 && height === 0 && !force ) ? + true : + ( width !== 0 && height !== 0 && !force ) ? + false : + !!( jQuery.curCSS(elem, "display") === "none" ); }; Sizzle.selectors.filters.visible = function(elem){ - return elem.offsetWidth > 0 || elem.offsetHeight > 0; + return !Sizzle.selectors.filters.hidden(elem); }; Sizzle.selectors.filters.animated = function(elem){