X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=src%2Fselector.js;h=b58507d2c848a3056197e82cbd077a368726d7a1;hb=de07ebc1a0a656c53ebee3f95802db08bb3cd680;hp=2fa8e5d6ce78c229492dbe4691e0e865f0052870;hpb=26731d475bded26fb1323d4f33266f503474d4b8;p=jquery.git diff --git a/src/selector.js b/src/selector.js index 2fa8e5d..b58507d 100644 --- a/src/selector.js +++ b/src/selector.js @@ -8,7 +8,8 @@ var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g, done = 0, - toString = Object.prototype.toString; + toString = Object.prototype.toString, + hasDuplicate = false; var Sizzle = function(selector, context, results, seed) { results = results || []; @@ -760,6 +761,7 @@ if ( document.documentElement.compareDocumentPosition ) { } root.removeChild( form ); + root = form = null; // release memory in IE })(); (function(){ @@ -800,6 +802,8 @@ if ( document.documentElement.compareDocumentPosition ) { return elem.getAttribute("href", 2); }; } + + div = null; // release memory in IE })(); if ( document.querySelectorAll ) (function(){ @@ -829,6 +833,8 @@ if ( document.querySelectorAll ) (function(){ for ( var prop in oldSizzle ) { Sizzle[ prop ] = oldSizzle[ prop ]; } + + div = null; // release memory in IE })(); if ( document.getElementsByClassName && document.documentElement.getElementsByClassName ) (function(){ @@ -851,6 +857,8 @@ if ( document.getElementsByClassName && document.documentElement.getElementsByCl return context.getElementsByClassName(match[1]); } }; + + div = null; // release memory in IE })(); function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { @@ -969,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){