Added a test case for "purple include", fixed a bug.
[jquery.git] / src / ajax / ajax.js
index aa62754..ccf4f14 100644 (file)
@@ -48,6 +48,12 @@ jQuery.fn.extend({
                if ( jQuery.isFunction( url ) )
                        return this.bind("load", url);
 
+               var off = url.indexOf(" ");
+               if ( off >= 0 ) {
+                       var selector = url.slice(off, url.length);
+                       url = url.slice(0, off);
+               }
+
                callback = callback || function(){};
 
                // Default to a GET request
@@ -78,7 +84,19 @@ jQuery.fn.extend({
                        complete: function(res, status){
                                // If successful, inject the HTML into all the matched elements
                                if ( status == "success" || !ifModified && status == "notmodified" )
-                                       self.html(res.responseText);
+                                       // See if a selector was specified
+                                       self.html( selector ?
+                                               // Create a dummy div to hold the results
+                                               jQuery("<div/>")
+                                                       // inject the contents of the document in, removing the scripts
+                                                       // to avoid any 'Permission Denied' errors in IE
+                                                       .append(res.responseText.replace(/<script(.|\s)*?\/script>/g, ""))
+
+                                                       // Locate the specified elements
+                                                       .find(selector) :
+
+                                               // If not, just inject the full result
+                                               res.responseText );
 
                                // Add delay to account for Safari's delay in globalEval
                                setTimeout(function(){