aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOleg <markelog@gmail.com>2013-01-16 22:07:53 +0400
committerDave Methvin <dave.methvin@gmail.com>2013-01-20 18:30:56 -0500
commit19def21df41d6be6419e4d2480a656d9e1a0e6b7 (patch)
tree6842bc6fe513630008b42cd17cf59be1217bcc3e
parentdbf4926e31390ceda57730c68d40f34536803114 (diff)
downloadjquery-19def21df41d6be6419e4d2480a656d9e1a0e6b7.tar.gz
jquery-19def21df41d6be6419e4d2480a656d9e1a0e6b7.zip
Fix #13232, fix jQuery.buildFragment for tables, close gh-1138.
-rw-r--r--src/manipulation.js8
-rw-r--r--test/unit/manipulation.js29
2 files changed, 34 insertions, 3 deletions
diff --git a/src/manipulation.js b/src/manipulation.js
index 3193ad7af..9a2b3db66 100644
--- a/src/manipulation.js
+++ b/src/manipulation.js
@@ -15,15 +15,17 @@ var rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>
// Support: IE 9
option: [ 1, "<select multiple='multiple'>", "</select>" ],
- tr: [ 1, "<table>", "</table>" ],
- td: [ 3, "<table><tr>", "</tr></table>" ],
+ thead: [ 1, "<table>", "</table>" ],
+ tr: [ 2, "<table><tbody>", "</tbody></table>" ],
+ td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
+
_default: [ 0, "", "" ]
};
// Support: IE 9
wrapMap.optgroup = wrapMap.option;
-wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead = wrapMap.col = wrapMap.tr;
+wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.col = wrapMap.thead;
wrapMap.th = wrapMap.td;
jQuery.fn.extend({
diff --git a/test/unit/manipulation.js b/test/unit/manipulation.js
index c5bee2ca9..fdbae76d7 100644
--- a/test/unit/manipulation.js
+++ b/test/unit/manipulation.js
@@ -2196,3 +2196,32 @@ test( "Make sure jQuery.fn.remove can work on elements in documentFragment", 1,
equal( fragment.childNodes.length, 0, "div element was removed from documentFragment" );
});
+
+test( "Make sure specific elements with content created correctly (#13232)", 20, function() {
+ var results = [],
+ args = [],
+ elems = {
+ thead: "<tr><td>thead</td></tr>",
+ tbody: "<tr><td>tbody</td></tr>",
+ tfoot: "<tr><td>tfoot</td></tr>",
+ colgroup: "<col span='5' />",
+ caption: "caption",
+ tr: "<td>tr</td>",
+ th: "th",
+ td: "<div>td</div>",
+ optgroup: "<option>optgroup</option>",
+ option: "option"
+ };
+
+ jQuery.each( elems, function( name, value ) {
+ var html = "<" + name + ">" + value + "</" + name + ">";
+ ok( jQuery.nodeName( jQuery.parseHTML( "<" + name + ">" + value + "</" + name + ">" )[ 0 ], name ), name + " is created correctly" );
+
+ results.push( name );
+ args.push( html );
+ });
+
+ jQuery.fn.append.apply( jQuery("<div/>"), args ).children().each(function( i ) {
+ ok( jQuery.nodeName( this, results[ i ] ) );
+ });
+});