Added support .css("left",30). Fixed up the multiFilter code.
[jquery.git] / src / selector / selector.js
index 7f71e2e..40ac53d 100644 (file)
@@ -59,7 +59,7 @@ jQuery.extend({
                        _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"
        },
@@ -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<Element>
@@ -214,10 +227,6 @@ jQuery.extend({
                                                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] == "." )