Added a fix for #891 (Using a /foo selector within a non-document context.)
[jquery.git] / src / selector / selector.js
index e1abbf4..856e0f5 100644 (file)
@@ -126,7 +126,7 @@ jQuery.extend({
                        t = t.substr(2,t.length);
 
                // And the / root expression
-               } else if ( !t.indexOf("/") ) {
+               } else if ( !t.indexOf("/") && !context.ownerDocument ) {
                        context = context.documentElement;
                        t = t.substr(1,t.length);
                        if ( t.indexOf("/") >= 1 )
@@ -219,15 +219,17 @@ jQuery.extend({
                                                m = re2.exec(t);
                                        }
 
+                                       var last = ret[ret.length-1];
+
                                        // Try to do a global search by ID, where we can
-                                       if ( m[1] == "#" && ret[ret.length-1].getElementById ) {
+                                       if ( m[1] == "#" && last && last.getElementById ) {
                                                // Optimization for HTML document case
-                                               var oid = ret[ret.length-1].getElementById(m[2]);
+                                               var oid = last.getElementById(m[2]);
                                                
                                                // Do a quick check for the existence of the actual ID attribute
                                                // to avoid selecting by the name attribute in IE
                                                if ( jQuery.browser.msie && oid && oid.id != m[2] )
-                                                       oid = jQuery('[@id="'+m[2]+'"]', ret[ret.length-1])[0];
+                                                       oid = jQuery('[@id="'+m[2]+'"]', last)[0];
 
                                                // Do a quick check for node name (where applicable) so
                                                // that div#foo searches will be really fast