- div = jQuery("<div/>").html('<object height="355" width="425"> <param name="movie" value="http://www.youtube.com/v/JikaHBDoV3k&hl=en"> <param name="wmode" value="transparent"> </object>');
-
- div = div.clone(true);
- equals( div.length, 1, "One element cloned" );
- equals( div[0].nodeName.toUpperCase(), "DIV", "DIV element cloned" );
-
- div = jQuery("<div/>").data({ a: true, b: true });
- div = div.clone(true);
- equals( div.data("a"), true, "Data cloned." );
- equals( div.data("b"), true, "Data cloned." );
+ // manually clean up detached elements
+ div.remove();
+ clone.remove();
+
+ // this is technically an invalid object, but because of the special
+ // classid instantiation it is the only kind that IE has trouble with,
+ // so let's test with it too.
+ div = jQuery("<div/>").html('<object height="355" width="425" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"> <param name="movie" value="http://www.youtube.com/v/3KANI2dpXLw&hl=en"> <param name="wmode" value="transparent"> </object>');
+
+ clone = div.clone(true);
+ equals( clone.length, 1, "One element cloned" );
+ equals( clone.html(), div.html(), "Element contents cloned" );
+ equals( clone[0].nodeName.toUpperCase(), "DIV", "DIV element cloned" );
+
+ // and here's a valid one.
+ div = jQuery("<div/>").html('<object height="355" width="425" type="application/x-shockwave-flash" data="http://www.youtube.com/v/3KANI2dpXLw&hl=en"> <param name="movie" value="http://www.youtube.com/v/3KANI2dpXLw&hl=en"> <param name="wmode" value="transparent"> </object>');
+
+ clone = div.clone(true);
+ equals( clone.length, 1, "One element cloned" );
+ equals( clone.html(), div.html(), "Element contents cloned" );
+ equals( clone[0].nodeName.toUpperCase(), "DIV", "DIV element cloned" );
+
+ div = jQuery("<div/>").data({ a: true });
+ clone = div.clone(true);
+ equals( clone.data("a"), true, "Data cloned." );
+ clone.data("a", false);
+ equals( clone.data("a"), false, "Ensure cloned element data object was correctly modified" );
+ equals( div.data("a"), true, "Ensure cloned element data object is copied, not referenced" );
+
+ // manually clean up detached elements
+ div.remove();
+ clone.remove();