]> source.dussan.org Git - jquery.git/commitdiff
Fix #12957. Simplify wrapMap, it doesn't need end tags. Close gh-1044.
authorOleg <markelog@gmail.com>
Wed, 28 Nov 2012 02:32:59 +0000 (21:32 -0500)
committerDave Methvin <dave.methvin@gmail.com>
Wed, 28 Nov 2012 02:32:59 +0000 (21:32 -0500)
src/manipulation.js
test/unit/attributes.js
test/unit/manipulation.js

index 6521e885ee8a3572b2f466baa15ea5a6ce5b4acc..f215d5a8cc8be870d72242dd5de71f64dba9bcac 100644 (file)
@@ -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];
index 7b2f21ad0e8bad7a357d67623eba1644bee0b61e..db18d45436e2d815ed9f004608a6abb12a73a34c 100644 (file)
@@ -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" );
 });
index 3a1d598d20cb18a32888ce48301182f006648ac5..f0cdfa346b48b7a1da8864dbf80f1145de96d606 100644 (file)
@@ -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." );
 });