.remove("...") removed too much.
[jquery.git] / src / selector / selector.js
index 7f71e2e..e21102c 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"
@@ -214,10 +214,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] == "." )