X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=src%2Fselector%2Fselector.js;h=4a6d1054e63fca918ad68f0703ca8a36cd85e283;hb=bb3520432673f18c3e461cb319e4be6bf547f23d;hp=a478376f8f3fc9721a99bb93211a385a472c8ab1;hpb=e1e47cddd64e904606c6d239d1d3e1d647f23df6;p=jquery.git diff --git a/src/selector/selector.js b/src/selector/selector.js index a478376..4a6d105 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,19 @@ jQuery.extend({ } ], + multiFilter: function( expr, elems, not ) { + var old, cur = []; + + while ( expr && expr != old ) { + old = expr; + var f = jQuery.filter( expr, elems, not ); + expr = f.t.replace(/^\s*,\s*/, "" ); + cur = not ? elems = f.r : jQuery.merge( cur, f.r ); + } + + return cur; + }, + /** * @name $.find * @type Array @@ -175,8 +188,8 @@ jQuery.extend({ // matched a token if ( t && !foundToken ) { // Handle multiple expressions - if ( !t.indexOf(",") || !t.indexOf("|") ) { - // Clean teh result set + if ( !t.indexOf(",") ) { + // Clean the result set if ( ret[0] == context ) ret.shift(); // Merge the result sets @@ -214,10 +227,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] == "." )