aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohn Resig <jeresig@gmail.com>2007-08-25 03:33:08 +0000
committerJohn Resig <jeresig@gmail.com>2007-08-25 03:33:08 +0000
commit34f1042902f8dbf133fdc3c62d17e12ec0cb7a26 (patch)
tree7fc6b3e7bcb0798470d5429408d80aa0ba3b826b
parent97f2032e13b85db72910e9cc1e75f2eb75e43dc4 (diff)
downloadjquery-34f1042902f8dbf133fdc3c62d17e12ec0cb7a26.tar.gz
jquery-34f1042902f8dbf133fdc3c62d17e12ec0cb7a26.zip
New feature: You can now inject portions of a document via .load(), as opposed to the full thing.
Examples: - $("#test").load("test.html #something"); - $("#test").load("test.html p.user"); Caveats: - No scripts are injected when a selector is used. - The selector is rooted inside the head and body - it's equivalent to doing: $("body,head").find(selector)
-rw-r--r--src/ajax/ajax.js18
1 files changed, 17 insertions, 1 deletions
diff --git a/src/ajax/ajax.js b/src/ajax/ajax.js
index aa6275410..795cd8a9e 100644
--- a/src/ajax/ajax.js
+++ b/src/ajax/ajax.js
@@ -48,6 +48,10 @@ jQuery.fn.extend({
if ( jQuery.isFunction( url ) )
return this.bind("load", url);
+ var off = url.indexOf(" ");
+ var selector = url.slice(off, url.length);
+ url = url.slice(0, off);
+
callback = callback || function(){};
// Default to a GET request
@@ -78,7 +82,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(){