jquery selector: reverting [5343], check #1960.
[jquery.git] / src / selector.js
index 72fe07e..abb1e7f 100644 (file)
@@ -1,4 +1,3 @@
-
 var chars = jQuery.browser.safari && parseInt(jQuery.browser.version) < 417 ?
                "(?:[\\w*_-]|\\\\.)" :
                "(?:[\\w\u0128-\uFFFF*_-]|\\\\.)",
@@ -114,12 +113,13 @@ jQuery.extend({
 
                        t = jQuery.trim(t);
 
-                       var foundToken = false;
+                       var foundToken = false,
 
                        // An attempt at speeding up child selectors that
                        // point to a specific element tag
-                       var re = quickChild;
-                       var m = re.exec(t);
+                               re = quickChild,
+                               
+                               m = re.exec(t);
 
                        if ( m ) {
                                nodeName = m[1].toUpperCase();
@@ -331,30 +331,24 @@ jQuery.extend({
                                r = jQuery.classFilter(r, m[2], not);
 
                        else if ( m[1] == "[" ) {
-                               var type = m[3];
+                               var tmp = [], type = m[3];
                                
-                               // special case, filter by exact name
-                               if ( !not && m[2] == 'name' && type == '=' )
-                                       r = jQuery.grep( document.getElementsByName(m[5]), function(elem){
-                                               return jQuery.inArray( elem, r ) != -1; 
-                                       });
-                               else {
-                                       for ( var i = 0, rl = r.length, tmp = []; i < rl; i++ ) {
-                                               var a = r[i], z = a[ jQuery.props[m[2]] || m[2] ];
-                                               
-                                               if ( z == null || /href|src|selected/.test(m[2]) )
-                                                       z = jQuery.attr(a,m[2]) || '';
-       
-                                               if ( (type == "" && !!z ||
-                                                        type == "=" && z == m[5] ||
-                                                        type == "!=" && z != m[5] ||
-                                                        type == "^=" && z && !z.indexOf(m[5]) ||
-                                                        type == "$=" && z.substr(z.length - m[5].length) == m[5] ||
-                                                        (type == "*=" || type == "~=") && z.indexOf(m[5]) >= 0) ^ not )
-                                                               tmp.push( a );
-                                       }                                       
-                                       r = tmp;
+                               for ( var i = 0, rl = r.length; i < rl; i++ ) {
+                                       var a = r[i], z = a[ jQuery.props[m[2]] || m[2] ];
+                                       
+                                       if ( z == null || /href|src|selected/.test(m[2]) )
+                                               z = jQuery.attr(a,m[2]) || '';
+
+                                       if ( (type == "" && !!z ||
+                                                type == "=" && z == m[5] ||
+                                                type == "!=" && z != m[5] ||
+                                                type == "^=" && z && !z.indexOf(m[5]) ||
+                                                type == "$=" && z.substr(z.length - m[5].length) == m[5] ||
+                                                (type == "*=" || type == "~=") && z.indexOf(m[5]) >= 0) ^ not )
+                                                       tmp.push( a );
                                }
+                               
+                               r = tmp;
 
                        // We can get a speed boost by handling nth-child here
                        } else if ( m[1] == ":" && m[2] == "nth-child" ) {
@@ -416,8 +410,8 @@ jQuery.extend({
        },
 
        dir: function( elem, dir ){
-               var matched = [];
-               var cur = elem[dir];
+               var matched = [],
+                       cur = elem[dir];
                while ( cur && cur != document ) {
                        if ( cur.nodeType == 1 )
                                matched.push( cur );
@@ -441,11 +435,10 @@ jQuery.extend({
                var r = [];
 
                for ( ; n; n = n.nextSibling ) {
-                       if ( n.nodeType == 1 && (!elem || n != elem) )
+                       if ( n.nodeType == 1 && n != elem )
                                r.push( n );
                }
 
                return r;
        }
 });
-