Skip to content
Permalink
Browse files

Fix #12957. Simplify wrapMap, it doesn't need end tags. Close gh-1044.

  • Loading branch information...
markelog authored and dmethvin committed Nov 28, 2012
1 parent 1052f9c commit 9ae6b1a019553e95a6205d5c42ff7fa25e7a482e
Showing with 18 additions and 19 deletions.
  1. +10 −10 src/manipulation.js
  2. +2 −5 test/unit/attributes.js
  3. +6 −4 test/unit/manipulation.js
@@ -30,18 +30,18 @@ var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figca
rscriptTypeMasked = /^true\/(.*)/,
rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,
wrapMap = {
option: [ 1, "<select multiple='multiple'>", "</select>" ],
legend: [ 1, "<fieldset>", "</fieldset>" ],
area: [ 1, "<map>", "</map>" ],
param: [ 1, "<object>", "</object>" ],
thead: [ 1, "<table>", "</table>" ],
tr: [ 2, "<table><tbody>", "</tbody></table>" ],
col: [ 2, "<table><tbody></tbody><colgroup>", "</colgroup></table>" ],
td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
option: [ 1, "<select multiple='multiple'>" ],
legend: [ 1, "<fieldset>" ],
area: [ 1, "<map>" ],
param: [ 1, "<object>" ],
thead: [ 1, "<table>" ],
tr: [ 2, "<table><tbody>" ],
col: [ 2, "<table><tbody></tbody><colgroup>", "</table>" ],
td: [ 3, "<table><tbody><tr>" ],

// IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags,
// unless wrapped in a div with non-breaking characters in front of it.
_default: jQuery.support.htmlSerialize ? [ 0, "", "" ] : [ 1, "X<div>", "" ]
_default: jQuery.support.htmlSerialize ? [ 0, "" ] : [ 1, "X<div>" ]
},
safeFragment = createSafeFragment( document ),
fragmentDiv = safeFragment.appendChild( document.createElement("div") );
@@ -713,7 +713,7 @@ jQuery.extend({
// Deserialize a standard representation
tag = ( rtagName.exec( elem ) || ["", ""] )[1].toLowerCase();
wrap = wrapMap[ tag ] || wrapMap._default;
tmp.innerHTML = wrap[1] + elem.replace( rxhtmlTag, "<$1></$2>" ) + wrap[2];
tmp.innerHTML = wrap[1] + elem.replace( rxhtmlTag, "<$1></$2>" ) + ( wrap[2] || "" );

// Descend through wrappers to the right content
j = wrap[0];
@@ -94,7 +94,7 @@ test( "attr(String)", function() {
equal( jQuery("#tAnchor5").attr("href"), "#5", "Check for non-absolute href (an anchor)" );
jQuery("<a id='tAnchor6' href='#5' />").appendTo("#qunit-fixture");
equal( jQuery("#tAnchor5").prop("href"), jQuery("#tAnchor6").prop("href"), "Check for absolute href prop on an anchor" );

$("<script type='jquery/test' src='#5' id='scriptSrc'></script>").appendTo("#qunit-fixture");
equal( jQuery("#tAnchor5").prop("href"), jQuery("#scriptSrc").prop("src"), "Check for absolute src prop on a script" );

@@ -1298,14 +1298,11 @@ test( "contents().hasClass() returns correct values", function() {
});

test( "coords returns correct values in IE6/IE7, see #10828", function() {
expect( 2 );
expect( 1 );

var area,
map = jQuery("<map />");

area = map.html("<area shape='rect' coords='0,0,0,0' href='#' alt='a' />").find("area");
equal( area.attr("coords"), "0,0,0,0", "did not retrieve coords correctly" );

area = map.html("<area shape='rect' href='#' alt='a' /></map>").find("area");
equal( area.attr("coords"), undefined, "did not retrieve coords correctly" );
});
@@ -356,7 +356,7 @@ var testAppendForObject = function(valueObj, isFragment) {
};

var testAppend = function(valueObj) {
expect(58);
expect(59);
testAppendForObject(valueObj, false);
testAppendForObject(valueObj, true);

@@ -440,6 +440,8 @@ var testAppend = function(valueObj) {
$radioParent.wrap("<div></div>");
equal( $radioChecked[0].checked, true, "Reappending radios uphold which radio is checked" );
equal( $radioUnchecked[0].checked, false, "Reappending radios uphold not being checked" );

equal( jQuery("<div/>").append("option<area/>")[0].childNodes.length, 2, "HTML-string with leading text should be processed correctly" );
};

test("append(String|Element|Array<Element>|jQuery)", function() {
@@ -537,11 +539,11 @@ test("replaceWith on XML document (#9960)", function () {
xml2 = jQuery( xmlDoc2 ),
scxml1 = jQuery( ":first", xml1 ),
scxml2 = jQuery( ":first", xml2 );

scxml1.replaceWith( scxml2 );

newNode = jQuery( ":first>state[id='provisioning3']", xml1 );

equal( newNode.length, 1, "ReplaceWith not working on document nodes." );
});

0 comments on commit 9ae6b1a

Please sign in to comment.
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.