X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=src%2Fselector%2Fselector.js;h=4a6d1054e63fca918ad68f0703ca8a36cd85e283;hb=bb3520432673f18c3e461cb319e4be6bf547f23d;hp=d9114c2406f9c070089ab8ea567a1087100b641a;hpb=12e63353391f1a556a73fe92bcd8e5f0ac277726;p=jquery.git diff --git a/src/selector/selector.js b/src/selector/selector.js index d9114c2..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