From: John Resig <jeresig@gmail.com>
Date: Wed, 11 Nov 2009 19:23:56 +0000 (-0500)
Subject: Fixed the case where HTML that contained entities was being inserted as text strings... 
X-Git-Url: http://git.asbjorn.it/?a=commitdiff_plain;h=7c4144fab314d98b85303d01ab904bb711bc2ecc;p=jquery.git

Fixed the case where HTML that contained entities was being inserted as text strings instead of HTML. Thanks to dmethvin for the test case! Fixes #5483.
---

diff --git a/src/manipulation.js b/src/manipulation.js
index eea377b..1699f68 100644
--- a/src/manipulation.js
+++ b/src/manipulation.js
@@ -4,7 +4,7 @@ var rinlinejQuery = / jQuery\d+="(?:\d+|null)"/g,
 	rselfClosing = /^(?:abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i,
 	rtagName = /<([\w:]+)/,
 	rtbody = /<tbody/i,
-	rhtml = /</,
+	rhtml = /<|&\w+;/,
 	fcloseTag = function(all, front, tag){
 		return rselfClosing.test(tag) ?
 			all :
diff --git a/test/unit/manipulation.js b/test/unit/manipulation.js
index 0098416..0f11de4 100644
--- a/test/unit/manipulation.js
+++ b/test/unit/manipulation.js
@@ -643,7 +643,7 @@ test("val(Function)", function() {
 })
 
 var testHtml = function(valueObj) {
-	expect(17);
+	expect(20);
 
 	window.debug = true;
 
@@ -676,6 +676,12 @@ var testHtml = function(valueObj) {
 	equals( $div.html(valueObj( 5 )).html(), '5', 'Setting a number as html' );
 	equals( $div.html(valueObj( 0 )).html(), '0', 'Setting a zero as html' );
 
+	var $div2 = jQuery('<div/>'), insert = "&lt;div&gt;hello1&lt;/div&gt;";
+	equals( $div2.html(insert).html(), insert, "Verify escaped insertion." );
+	equals( $div2.html("x" + insert).html(), "x" + insert, "Verify escaped insertion." );
+	equals( $div2.html(" " + insert).html(), " " + insert, "Verify escaped insertion." );
+
+
 	reset();
 
 	jQuery("#main").html(valueObj('<script type="something/else">ok( false, "Non-script evaluated." );</script><script type="text/javascript">ok( true, "text/javascript is evaluated." );</script><script>ok( true, "No type is evaluated." );</script><div><script type="text/javascript">ok( true, "Inner text/javascript is evaluated." );</script><script>ok( true, "Inner No type is evaluated." );</script><script type="something/else">ok( false, "Non-script evaluated." );</script></div>'));