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