Lots of improvements. Added support for .not( jQuery("...") ) and support for multi...
[jquery.git] / src / selector / selector.js
index d9114c2..1bad21b 100644 (file)
@@ -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<Element>