aboutsummaryrefslogtreecommitdiffstats
path: root/src/core/parseHTML.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/parseHTML.js')
-rw-r--r--src/core/parseHTML.js38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/core/parseHTML.js b/src/core/parseHTML.js
new file mode 100644
index 000000000..b097bfcc5
--- /dev/null
+++ b/src/core/parseHTML.js
@@ -0,0 +1,38 @@
+define([
+ "../core",
+ "../var/rsingleTag",
+ "../manipulation" // buildFragment
+], function( jQuery, rsingleTag ) {
+
+ // data: string of html
+ // context (optional): If specified, the fragment will be created in this context, defaults to document
+ // keepScripts (optional): If true, will include scripts passed in the html string
+ jQuery.parseHTML = function( data, context, keepScripts ) {
+ if ( !data || typeof data !== "string" ) {
+ return null;
+ }
+ if ( typeof context === "boolean" ) {
+ keepScripts = context;
+ context = false;
+ }
+ context = context || document;
+
+ var parsed = rsingleTag.exec( data ),
+ scripts = !keepScripts && [];
+
+ // Single tag
+ if ( parsed ) {
+ return [ context.createElement( parsed[1] ) ];
+ }
+
+ parsed = jQuery.buildFragment( [ data ], context, scripts );
+
+ if ( scripts && scripts.length ) {
+ jQuery( scripts ).remove();
+ }
+
+ return jQuery.merge( [], parsed.childNodes );
+ };
+
+ return jQuery.parseHTML;
+});