aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Serduke <davidserduke@gmail.com>2008-01-23 03:54:23 +0000
committerDavid Serduke <davidserduke@gmail.com>2008-01-23 03:54:23 +0000
commit1faed11e3c0752981d8b01e1272fb3a72272f966 (patch)
treeb850850abb3cbe042d327016c2225d7996bd9aab
parente7fef859f10045a296368e82d7bbe69924d338c2 (diff)
downloadjquery-1faed11e3c0752981d8b01e1272fb3a72272f966.tar.gz
jquery-1faed11e3c0752981d8b01e1272fb3a72272f966.zip
Fix #2184 by using the jQuery.clean() function instead of a direct innerHTML assignment in the clone() function for IE.
-rw-r--r--src/core.js6
-rw-r--r--test/unit/core.js14
2 files changed, 15 insertions, 5 deletions
diff --git a/src/core.js b/src/core.js
index b90427b4d..4cb0a22fe 100644
--- a/src/core.js
+++ b/src/core.js
@@ -303,11 +303,9 @@ jQuery.fn = jQuery.prototype = {
// as properties will not be copied (such as the
// the name attribute on an input).
var clone = this.cloneNode(true),
- container = document.createElement("div"),
- container2 = document.createElement("div");
+ container = document.createElement("div");
container.appendChild(clone);
- container2.innerHTML = container.innerHTML;
- return container2.firstChild;
+ return jQuery.clean([container.innerHTML])[0];
} else
return this.cloneNode(true);
});
diff --git a/test/unit/core.js b/test/unit/core.js
index a5a59c3a1..7b0aad4ed 100644
--- a/test/unit/core.js
+++ b/test/unit/core.js
@@ -955,11 +955,23 @@ test("find(String)", function() {
});
test("clone()", function() {
- expect(4);
+ expect(20);
ok( 'This is a normal link: Yahoo' == $('#en').text(), 'Assert text for #en' );
var clone = $('#yahoo').clone();
ok( 'Try them out:Yahoo' == $('#first').append(clone).text(), 'Check for clone' );
ok( 'This is a normal link: Yahoo' == $('#en').text(), 'Reassert text for #en' );
+
+ var cloneTags = [
+ "<table/>", "<tr/>", "<td/>", "<div/>",
+ "<button/>", "<ul/>", "<ol/>", "<li/>",
+ "<input type='checkbox' />", "<select/>", "<option/>", "<textarea/>",
+ "<tbody/>", "<thead/>", "<tfoot/>", "<iframe/>"
+ ];
+ for (var i = 0; i < cloneTags.length; i++) {
+ var j = $(cloneTags[i]);
+ equals( j[0].tagName, j.clone()[0].tagName, 'Clone a &lt;' + cloneTags[i].substring(1));
+ }
+
// using contents will get comments regular, text, and comment nodes
var cl = $("#nonnodes").contents().clone();
ok( cl.length >= 2, "Check node,textnode,comment clone works (some browsers delete comments on clone)" );