Replacement jQuery.load() for use with innerShiv
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// jQuery plugin based on .load() for use with innerShiv | |
// http://jdbartlett.github.com/innershiv for more info | |
// $('selector').loadShiv('example.html selector'); | |
jQuery.fn.loadShiv = function (url, params, callback) { | |
var off, selector, self, type; | |
if (!this.length || typeof url !== 'string') { | |
return this; | |
} | |
off = url.indexOf(' '); | |
if (off >= 0) { | |
selector = url.slice(off, url.length); | |
url = url.slice(0, off); | |
} | |
type = 'GET'; | |
if (params) { | |
if (jQuery.isFunction(params)) { | |
callback = params; | |
params = null; | |
} else if (typeof params === 'object') { | |
params = jQuery.param(params, jQuery.ajaxSettings.traditional); | |
type = 'POST'; | |
} | |
} | |
self = this; | |
jQuery.ajax({ | |
url: url, | |
type: type, | |
dataType: 'html', | |
data: params, | |
complete: function (res, status) { | |
var shivved; | |
if (status === 'success' || status === 'notmodified') { | |
shivved = jQuery(innerShiv((selector ? '<div>' : '') + res.responseText, false)); | |
if (selector) { | |
shivved = shivved.find(selector); | |
} | |
self.empty().append(shivved); | |
} | |
if (callback) { | |
self.each(callback, [res.responseText, status, res]); | |
} | |
} | |
}); | |
return this; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Just a note to say that you need to include the innerShiv plugin as well as this gist. Works like a charm though.