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

This commit is contained in:
Oleg 2012-11-27 21:32:59 -05:00 committed by Dave Methvin
parent 1052f9cb2b
commit 9ae6b1a019
3 changed files with 18 additions and 19 deletions

View File

@ -30,18 +30,18 @@ var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figca
rscriptTypeMasked = /^true\/(.*)/, rscriptTypeMasked = /^true\/(.*)/,
rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g, rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,
wrapMap = { wrapMap = {
option: [ 1, "<select multiple='multiple'>", "</select>" ], option: [ 1, "<select multiple='multiple'>" ],
legend: [ 1, "<fieldset>", "</fieldset>" ], legend: [ 1, "<fieldset>" ],
area: [ 1, "<map>", "</map>" ], area: [ 1, "<map>" ],
param: [ 1, "<object>", "</object>" ], param: [ 1, "<object>" ],
thead: [ 1, "<table>", "</table>" ], thead: [ 1, "<table>" ],
tr: [ 2, "<table><tbody>", "</tbody></table>" ], tr: [ 2, "<table><tbody>" ],
col: [ 2, "<table><tbody></tbody><colgroup>", "</colgroup></table>" ], col: [ 2, "<table><tbody></tbody><colgroup>", "</table>" ],
td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ], td: [ 3, "<table><tbody><tr>" ],
// IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags, // 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. // 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 ), safeFragment = createSafeFragment( document ),
fragmentDiv = safeFragment.appendChild( document.createElement("div") ); fragmentDiv = safeFragment.appendChild( document.createElement("div") );
@ -713,7 +713,7 @@ jQuery.extend({
// Deserialize a standard representation // Deserialize a standard representation
tag = ( rtagName.exec( elem ) || ["", ""] )[1].toLowerCase(); tag = ( rtagName.exec( elem ) || ["", ""] )[1].toLowerCase();
wrap = wrapMap[ tag ] || wrapMap._default; 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 // Descend through wrappers to the right content
j = wrap[0]; j = wrap[0];

View File

@ -94,7 +94,7 @@ test( "attr(String)", function() {
equal( jQuery("#tAnchor5").attr("href"), "#5", "Check for non-absolute href (an anchor)" ); equal( jQuery("#tAnchor5").attr("href"), "#5", "Check for non-absolute href (an anchor)" );
jQuery("<a id='tAnchor6' href='#5' />").appendTo("#qunit-fixture"); 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" ); 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"); $("<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" ); 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() { test( "coords returns correct values in IE6/IE7, see #10828", function() {
expect( 2 ); expect( 1 );
var area, var area,
map = jQuery("<map />"); map = jQuery("<map />");
area = map.html("<area shape='rect' coords='0,0,0,0' href='#' alt='a' />").find("area"); 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" ); 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" );
}); });

View File

@ -356,7 +356,7 @@ var testAppendForObject = function(valueObj, isFragment) {
}; };
var testAppend = function(valueObj) { var testAppend = function(valueObj) {
expect(58); expect(59);
testAppendForObject(valueObj, false); testAppendForObject(valueObj, false);
testAppendForObject(valueObj, true); testAppendForObject(valueObj, true);
@ -440,6 +440,8 @@ var testAppend = function(valueObj) {
$radioParent.wrap("<div></div>"); $radioParent.wrap("<div></div>");
equal( $radioChecked[0].checked, true, "Reappending radios uphold which radio is checked" ); equal( $radioChecked[0].checked, true, "Reappending radios uphold which radio is checked" );
equal( $radioUnchecked[0].checked, false, "Reappending radios uphold not being 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() { test("append(String|Element|Array<Element>|jQuery)", function() {
@ -537,11 +539,11 @@ test("replaceWith on XML document (#9960)", function () {
xml2 = jQuery( xmlDoc2 ), xml2 = jQuery( xmlDoc2 ),
scxml1 = jQuery( ":first", xml1 ), scxml1 = jQuery( ":first", xml1 ),
scxml2 = jQuery( ":first", xml2 ); scxml2 = jQuery( ":first", xml2 );
scxml1.replaceWith( scxml2 ); scxml1.replaceWith( scxml2 );
newNode = jQuery( ":first>state[id='provisioning3']", xml1 ); newNode = jQuery( ":first>state[id='provisioning3']", xml1 );
equal( newNode.length, 1, "ReplaceWith not working on document nodes." ); equal( newNode.length, 1, "ReplaceWith not working on document nodes." );
}); });