X-Git-Url: http://git.asbjorn.it/?a=blobdiff_plain;ds=inline;f=src%2Fselector%2Fselector.js;h=1bad21b635e1f2aeac63274704d1b24d6b606ffd;hb=f2ff0db0320cfab0d856ff68d012cb843c97b600;hp=a478376f8f3fc9721a99bb93211a385a472c8ab1;hpb=e1e47cddd64e904606c6d239d1d3e1d647f23df6;p=jquery.git diff --git a/src/selector/selector.js b/src/selector/selector.js index a478376..1bad21b 100644 --- a/src/selector/selector.js +++ b/src/selector/selector.js @@ -70,10 +70,10 @@ jQuery.extend({ "\\[ *(@)S *([!*$^=]*) *('?\"?)(.*?)\\4 *\\]", // Match: [div], [div p] - "(\\[)\\s*(.*?)\\s*\\]", + "(\\[)\\s*(.*?(\\[.*?\\])?[^[]*?)\\s*\\]", // Match: :contains('foo') - "(:)S\\(\"?'?([^\\)]*?)\"?'?\\)", + "(:)S\\(\"?'?(.*?(\\(.*?\\))?[^(]*?)\"?'?\\)", // Match: :even, :last-chlid "([:.#]*)S" @@ -89,6 +89,24 @@ jQuery.extend({ } ], + multiFilter: function( expr, elems, not ) { + var old, cur = []; + + while ( expr && expr != old ) { +console.log( cur, expr, elems, not ); + var f = jQuery.filter( expr, elems, not ); + expr = f.t.replace(/^\s*,\s*/, "" ); + + if ( not ) + cur = elems = f.r; + else + cur = jQuery.merge( cur, f.r ); + } +console.log( "DONE", cur, expr, elems, not ); + + return cur; + }, + /** * @name $.find * @type Array @@ -214,10 +232,6 @@ jQuery.extend({ ret = r = oid && (!m[3] || oid.nodeName == m[3].toUpperCase()) ? [oid] : []; - // Use the DOM 0 shortcut for the body element - } else if ( m[1] == "" && m[2] == "body" ) { - ret = r = [ document.body ]; - } else { // Pre-compile a regular expression to handle class searches if ( m[1] == "." )