"\\[ *(@)S *([!*$^=]*) *('?\"?)(.*?)\\4 *\\]",
// Match: [div], [div p]
- "(\\[)\\s*(.*?)\\s*\\]",
+ "(\\[)\\s*(.*?(\\[.*?\\])?[^[]*?)\\s*\\]",
// Match: :contains('foo')
- "(:)S\\(\"?'?([^\\)]*?)\"?'?\\)",
+ "(:)S\\(\"?'?(.*?(\\(.*?\\))?[^(]*?)\"?'?\\)",
// Match: :even, :last-chlid
"([:.#]*)S"
}
],
+ 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<Element>
// 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