diff options
author | Oleg <markelog@gmail.com> | 2012-11-27 21:32:59 -0500 |
---|---|---|
committer | Dave Methvin <dave.methvin@gmail.com> | 2012-11-27 21:32:59 -0500 |
commit | 9ae6b1a019553e95a6205d5c42ff7fa25e7a482e (patch) | |
tree | 817caf8131b6b1c6ed0fb8fd01b6c2918293e2ba | |
parent | 1052f9cb2bad094144fa1186b0be8f477a9d4fa1 (diff) | |
download | jquery-9ae6b1a019553e95a6205d5c42ff7fa25e7a482e.tar.gz jquery-9ae6b1a019553e95a6205d5c42ff7fa25e7a482e.zip |
Fix #12957. Simplify wrapMap, it doesn't need end tags. Close gh-1044.
-rw-r--r-- | src/manipulation.js | 20 | ||||
-rw-r--r-- | test/unit/attributes.js | 7 | ||||
-rw-r--r-- | test/unit/manipulation.js | 10 |
3 files changed, 18 insertions, 19 deletions
diff --git a/src/manipulation.js b/src/manipulation.js index 6521e885e..f215d5a8c 100644 --- a/src/manipulation.js +++ b/src/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]; diff --git a/test/unit/attributes.js b/test/unit/attributes.js index 7b2f21ad0..db18d4543 100644 --- a/test/unit/attributes.js +++ b/test/unit/attributes.js @@ -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" ); }); diff --git a/test/unit/manipulation.js b/test/unit/manipulation.js index 3a1d598d2..f0cdfa346 100644 --- a/test/unit/manipulation.js +++ b/test/unit/manipulation.js @@ -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." ); }); |