Fixed the case where HTML that contained entities was being inserted as text strings...
authorJohn Resig <jeresig@gmail.com>
Wed, 11 Nov 2009 19:23:56 +0000 (14:23 -0500)
committerJohn Resig <jeresig@gmail.com>
Wed, 11 Nov 2009 19:23:56 +0000 (14:23 -0500)
src/manipulation.js
test/unit/manipulation.js

index eea377b..1699f68 100644 (file)
@@ -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 :
index 0098416..0f11de4 100644 (file)
@@ -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>'));