Skip to content
Permalink
Browse files

Fixed clone so that it now properly copies changes to the innerHTML i…

…n IE. Unfortunately, IE stores some modifications to some attributes only as a property and they are still not copied properly. This is documented in ticket #1836.
  • Loading branch information
brandonaaron committed Dec 8, 2007
1 parent b3ec8ed commit ccf055033ab165c677590b42fa0ca7e0a29e9fb7
Showing with 17 additions and 3 deletions.
  1. +17 −3 src/core.js
@@ -292,9 +292,23 @@ jQuery.fn = jQuery.prototype = {
clone: function( events ) {
// Do the clone
var ret = this.map(function(){
return this.outerHTML ?
jQuery( this.outerHTML )[0] :
this.cloneNode( true );
if ( jQuery.browser.msie ) {
// IE copies events bound via attachEvent when
// using cloneNode. Calling detachEvent on the
// clone will also remove the events from the orignal
// In order to get around this, we use innerHTML.
// Unfortunately, this means some modifications to
// attributes in IE that are actually only stored
// 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.appendChild(clone);
container2.innerHTML = container.innerHTML;
return container2.firstChild;
} else
return this.cloneNode(true);
});

// Need to set the expando to null on the cloned set if it exists

0 comments on commit ccf0550

Please sign in to comment.
You can’t perform that action at this time.