The default for .clone() is to not clone any events. Fixes #8123.
authorjeresig <jeresig@gmail.com>
Tue, 1 Feb 2011 13:57:18 +0000 (08:57 -0500)
committerjeresig <jeresig@gmail.com>
Tue, 1 Feb 2011 13:57:18 +0000 (08:57 -0500)
src/manipulation.js
test/unit/manipulation.js

index 442a14d..1ef19f8 100644 (file)
@@ -184,7 +184,7 @@ jQuery.fn.extend({
        },
 
        clone: function( dataAndEvents, deepDataAndEvents ) {
-               dataAndEvents = dataAndEvents == null ? true : dataAndEvents;
+               dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
                deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
 
                return this.map( function () {
index f0e2eae..e071086 100644 (file)
@@ -953,6 +953,17 @@ test("clone()", function() {
        div.remove();
        clone.remove();
 
+       var divEvt = jQuery("<div><ul><li>test</li></ul></div>").click(function(){
+               ok( false, "Bound event still exists after .clone()." );
+       }),
+               cloneEvt = divEvt.clone();
+
+       // Make sure that doing .clone() doesn't clone events
+       cloneEvt.trigger("click");
+
+       cloneEvt.remove();
+       divEvt.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.