_resort: function(m){
return ["", m[1], m[3], m[2], m[5]];
},
- _prefix: "z=jQuery.attr(a,m[3]);"
+ _prefix: "z=a[m[3]]||jQuery.attr(a,m[3]);"
},
"[": "jQuery.find(m[2],a).length"
},
"\\[ *(@)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 ) {
+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>
return [ t ];
// Make sure that the context is a DOM Element
- if ( context && context.nodeType == undefined )
+ if ( context && !context.nodeType )
context = null;
// Set the correct context (if none is provided)
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] == "." )
return r;
}
-});
\ No newline at end of file
+});