]> source.dussan.org Git - jquery.git/commitdiff
Remove .live() tests now in Migrate plugin.
authorDave Methvin <dave.methvin@gmail.com>
Tue, 18 Dec 2012 19:42:37 +0000 (14:42 -0500)
committerDave Methvin <dave.methvin@gmail.com>
Tue, 18 Dec 2012 19:42:37 +0000 (14:42 -0500)
test/unit/event.js

index 50328be4030f6db8be168cb1871bc123270f200c..32355c9ad5ee24712ff2b49c655df1332e717aa7 100644 (file)
@@ -14,7 +14,7 @@ test("null or undefined handler", function() {
        } catch (e) {}
 });
 
-test("bind(),live(),delegate() with non-null,defined data", function() {
+test("bind(),on(),delegate() with non-null,defined data", function() {
 
        expect(3);
 
@@ -22,15 +22,15 @@ test("bind(),live(),delegate() with non-null,defined data", function() {
                equal( data, 0, "non-null, defined data (zero) is correctly passed" );
        };
 
-       jQuery("#foo").bind("foo", handler);
-       jQuery("#foo").live("foo", handler);
-       jQuery("div").delegate("#foo", "foo", handler);
+       jQuery("#foo").bind("foo.bind", handler);
+       jQuery("#foo").on("foo.on", handler);
+       jQuery("div").delegate("#foo", "foo.delegate", handler);
 
        jQuery("#foo").trigger("foo", 0);
 
-       jQuery("#foo").unbind("foo", handler);
-       jQuery("#foo").die("foo", handler);
-       jQuery("div").undelegate("#foo", "foo");
+       jQuery("#foo").unbind("foo.bind", handler);
+       jQuery("#foo").off("foo.on", handler);
+       jQuery("div").undelegate("#foo", "foo.delegate");
 
 });
 
@@ -307,7 +307,7 @@ test("bind/one/unbind(Object)", function(){
        equal( mouseoverCounter, 4, "bind(Object)" );
 });
 
-test("live/die(Object), delegate/undelegate(String, Object)", function() {
+test("on/off(Object), delegate/undelegate(String, Object)", function() {
        expect(6);
 
        var clickCounter = 0, mouseoverCounter = 0,
@@ -326,12 +326,12 @@ test("live/die(Object), delegate/undelegate(String, Object)", function() {
                $a.trigger("click").trigger("mouseover");
        }
 
-       $a.live( events );
+       jQuery( document ).on( events, "#firstp a:first" );
        $p.delegate( "a", events, 2 );
 
        trigger();
-       equal( clickCounter, 3, "live/delegate" );
-       equal( mouseoverCounter, 3, "live/delegate" );
+       equal( clickCounter, 3, "on/delegate" );
+       equal( mouseoverCounter, 3, "on/delegate" );
 
        $p.undelegate( "a", events );
 
@@ -339,29 +339,29 @@ test("live/die(Object), delegate/undelegate(String, Object)", function() {
        equal( clickCounter, 4, "undelegate" );
        equal( mouseoverCounter, 4, "undelegate" );
 
-       $a.die( events );
+       jQuery( document ).off( events, "#firstp a:first" );
 
        trigger();
-       equal( clickCounter, 4, "die" );
-       equal( mouseoverCounter, 4, "die" );
+       equal( clickCounter, 4, "off" );
+       equal( mouseoverCounter, 4, "off" );
 });
 
-test("live/delegate immediate propagation", function() {
+test("on/delegate immediate propagation", function() {
        expect(2);
 
        var $p = jQuery("#firstp"), $a = $p.find("a:first"), lastClick;
 
        lastClick = "";
-       $a.live( "click", function(e) {
+       jQuery( document ).on( "click", "#firstp a:first", function(e) {
                lastClick = "click1";
                e.stopImmediatePropagation();
        });
-       $a.live( "click", function(e) {
+       jQuery( document ).on( "click", "#firstp a:first", function(e) {
                lastClick = "click2";
        });
        $a.trigger( "click" );
-       equal( lastClick, "click1", "live stopImmediatePropagation" );
-       $a.die( "click" );
+       equal( lastClick, "click1", "on stopImmediatePropagation" );
+       jQuery( document ).off( "click", "#firstp a:first" );
 
        lastClick = "";
        $p.delegate( "a", "click", function(e) {
@@ -631,26 +631,6 @@ test("bind(name, false), unbind(name, false)", function() {
        jQuery("#qunit-fixture").unbind("click");
 });
 
-test("live(name, false), die(name, false)", function() {
-       expect(3);
-
-       var main = 0;
-       jQuery("#qunit-fixture").live("click", function(e){ main++; });
-       jQuery("#ap").trigger("click");
-       equal( main, 1, "Verify that the trigger happened correctly." );
-
-       main = 0;
-       jQuery("#ap").live("click", false);
-       jQuery("#ap").trigger("click");
-       equal( main, 0, "Verify that no bubble happened." );
-
-       main = 0;
-       jQuery("#ap").die("click", false);
-       jQuery("#ap").trigger("click");
-       equal( main, 1, "Verify that the trigger happened correctly." );
-       jQuery("#qunit-fixture").die("click");
-});
-
 test("delegate(selector, name, false), undelegate(selector, name, false)", function() {
        expect(3);
 
@@ -979,21 +959,19 @@ test("trigger(type, [data], [fn])", function() {
        };
 
 
-       $elem.live("mouseenter", function(){
-               ok( true, "Trigger mouseenter bound by live" );
+       jQuery( document ).on("mouseenter", "#firstp", function(){
+               ok( true, "Trigger mouseenter bound by on" );
        });
 
-       $elem.live("mouseleave", function(){
-               ok( true, "Trigger mouseleave bound by live" );
+       jQuery( document ).on("mouseleave", "#firstp", function(){
+               ok( true, "Trigger mouseleave bound by on" );
        });
 
        $elem.trigger("mouseenter");
 
        $elem.trigger("mouseleave");
 
-       $elem.die("mouseenter");
-
-       $elem.die("mouseleave");
+       jQuery( document ).off( "mouseenter mouseleave", "#firstp");
 
        // Triggers handlrs and native
        // Trigger 5
@@ -1486,537 +1464,6 @@ test("jQuery.Event.currentTarget", function(){
                .off( "click" );
 });
 
-test(".live()/.die()", function() {
-       expect(66);
-
-       var submit = 0, div = 0, livea = 0, liveb = 0;
-
-       jQuery("#qunit-fixture div").live("submit", function(){ submit++; return false; });
-       jQuery("#qunit-fixture div").live("click", function(){ div++; });
-       jQuery("div#nothiddendiv").live("click", function(){ livea++; });
-       jQuery("div#nothiddendivchild").live("click", function(){ liveb++; });
-
-       // Nothing should trigger on the body
-       jQuery("body").trigger("click");
-       equal( submit, 0, "Click on body" );
-       equal( div, 0, "Click on body" );
-       equal( livea, 0, "Click on body" );
-       equal( liveb, 0, "Click on body" );
-
-       // This should trigger two events
-       submit = 0; div = 0; livea = 0; liveb = 0;
-       jQuery("div#nothiddendiv").trigger("click");
-       equal( submit, 0, "Click on div" );
-       equal( div, 1, "Click on div" );
-       equal( livea, 1, "Click on div" );
-       equal( liveb, 0, "Click on div" );
-
-       // This should trigger three events (w/ bubbling)
-       submit = 0; div = 0; livea = 0; liveb = 0;
-       jQuery("div#nothiddendivchild").trigger("click");
-       equal( submit, 0, "Click on inner div" );
-       equal( div, 2, "Click on inner div" );
-       equal( livea, 1, "Click on inner div" );
-       equal( liveb, 1, "Click on inner div" );
-
-       // This should trigger one submit
-       submit = 0; div = 0; livea = 0; liveb = 0;
-       jQuery("div#nothiddendivchild").trigger("submit");
-       equal( submit, 1, "Submit on div" );
-       equal( div, 0, "Submit on div" );
-       equal( livea, 0, "Submit on div" );
-       equal( liveb, 0, "Submit on div" );
-
-       // Make sure no other events were removed in the process
-       submit = 0; div = 0; livea = 0; liveb = 0;
-       jQuery("div#nothiddendivchild").trigger("click");
-       equal( submit, 0, "die Click on inner div" );
-       equal( div, 2, "die Click on inner div" );
-       equal( livea, 1, "die Click on inner div" );
-       equal( liveb, 1, "die Click on inner div" );
-
-       // Now make sure that the removal works
-       submit = 0; div = 0; livea = 0; liveb = 0;
-       jQuery("div#nothiddendivchild").die("click");
-       jQuery("div#nothiddendivchild").trigger("click");
-       equal( submit, 0, "die Click on inner div" );
-       equal( div, 2, "die Click on inner div" );
-       equal( livea, 1, "die Click on inner div" );
-       equal( liveb, 0, "die Click on inner div" );
-
-       // Make sure that the click wasn't removed too early
-       submit = 0; div = 0; livea = 0; liveb = 0;
-       jQuery("div#nothiddendiv").trigger("click");
-       equal( submit, 0, "die Click on inner div" );
-       equal( div, 1, "die Click on inner div" );
-       equal( livea, 1, "die Click on inner div" );
-       equal( liveb, 0, "die Click on inner div" );
-
-       // Make sure that stopPropgation doesn't stop live events
-       submit = 0; div = 0; livea = 0; liveb = 0;
-       jQuery("div#nothiddendivchild").live("click", function(e){ liveb++; e.stopPropagation(); });
-       jQuery("div#nothiddendivchild").trigger("click");
-       equal( submit, 0, "stopPropagation Click on inner div" );
-       equal( div, 1, "stopPropagation Click on inner div" );
-       equal( livea, 0, "stopPropagation Click on inner div" );
-       equal( liveb, 1, "stopPropagation Click on inner div" );
-
-       // Make sure click events only fire with primary click
-       submit = 0; div = 0; livea = 0; liveb = 0;
-       var event = jQuery.Event("click");
-       event.button = 1;
-       jQuery("div#nothiddendiv").trigger(event);
-
-       equal( livea, 0, "live secondary click" );
-
-       jQuery("div#nothiddendivchild").die("click");
-       jQuery("div#nothiddendiv").die("click");
-       jQuery("#qunit-fixture div").die("click");
-       jQuery("#qunit-fixture div").die("submit");
-
-       // Test binding with a different context
-       var clicked = 0, container = jQuery("#qunit-fixture")[0];
-       jQuery("#foo", container).live("click", function(e){ clicked++; });
-       jQuery("#qunit-fixture div").trigger("click");
-       jQuery("#foo").trigger("click");
-       jQuery("#qunit-fixture").trigger("click");
-       jQuery("body").trigger("click");
-       equal( clicked, 2, "live with a context" );
-
-       // Test unbinding with a different context
-       jQuery("#foo", container).die("click");
-       jQuery("#foo").trigger("click");
-       equal( clicked, 2, "die with a context");
-
-       // Test binding with event data
-       jQuery("#foo").live("click", true, function(e){ equal( e.data, true, "live with event data" ); });
-       jQuery("#foo").trigger("click").die("click");
-
-       // Test binding with trigger data
-       jQuery("#foo").live("click", function(e, data){ equal( data, true, "live with trigger data" ); });
-       jQuery("#foo").trigger("click", true).die("click");
-
-       // Test binding with different this object
-       jQuery("#foo").live("click", jQuery.proxy(function(e){ equal( this.foo, "bar", "live with event scope" ); }, { foo: "bar" }));
-       jQuery("#foo").trigger("click").die("click");
-
-       // Test binding with different this object, event data, and trigger data
-       jQuery("#foo").live("click", true, jQuery.proxy(function(e, data){
-               equal( e.data, true, "live with with different this object, event data, and trigger data" );
-               equal( this["foo"], "bar", "live with with different this object, event data, and trigger data" );
-               equal( data, true, "live with with different this object, event data, and trigger data");
-       }, { "foo": "bar" }));
-       jQuery("#foo").trigger("click", true).die("click");
-
-       // Verify that return false prevents default action
-       jQuery("#anchor2").live("click", function(){ return false; });
-       var hash = window.location.hash;
-       jQuery("#anchor2").trigger("click");
-       equal( window.location.hash, hash, "return false worked" );
-       jQuery("#anchor2").die("click");
-
-       // Verify that .preventDefault() prevents default action
-       jQuery("#anchor2").live("click", function(e){ e.preventDefault(); });
-       hash = window.location.hash;
-       jQuery("#anchor2").trigger("click");
-       equal( window.location.hash, hash, "e.preventDefault() worked" );
-       jQuery("#anchor2").die("click");
-
-       // Test binding the same handler to multiple points
-       var called = 0;
-       function callback(){ called++; return false; }
-
-       jQuery("#nothiddendiv").live("click", callback);
-       jQuery("#anchor2").live("click", callback);
-
-       jQuery("#nothiddendiv").trigger("click");
-       equal( called, 1, "Verify that only one click occurred." );
-
-       called = 0;
-       jQuery("#anchor2").trigger("click");
-       equal( called, 1, "Verify that only one click occurred." );
-
-       // Make sure that only one callback is removed
-       jQuery("#anchor2").die("click", callback);
-
-       called = 0;
-       jQuery("#nothiddendiv").trigger("click");
-       equal( called, 1, "Verify that only one click occurred." );
-
-       called = 0;
-       jQuery("#anchor2").trigger("click");
-       equal( called, 0, "Verify that no click occurred." );
-
-       // Make sure that it still works if the selector is the same,
-       // but the event type is different
-       jQuery("#nothiddendiv").live("foo", callback);
-
-       // Cleanup
-       jQuery("#nothiddendiv").die("click", callback);
-
-       called = 0;
-       jQuery("#nothiddendiv").trigger("click");
-       equal( called, 0, "Verify that no click occurred." );
-
-       called = 0;
-       jQuery("#nothiddendiv").trigger("foo");
-       equal( called, 1, "Verify that one foo occurred." );
-
-       // Cleanup
-       jQuery("#nothiddendiv").die("foo", callback);
-
-       // Make sure we don't loose the target by DOM modifications
-       // after the bubble already reached the liveHandler
-       var livec = 0, elemDiv = jQuery("#nothiddendivchild").html("<span></span>").get(0);
-
-       jQuery("#nothiddendivchild").live("click", function(e){ jQuery("#nothiddendivchild").html(""); });
-       jQuery("#nothiddendivchild").live("click", function(e){ if(e.target) {livec++;} });
-
-       jQuery("#nothiddendiv span").click();
-       equal( jQuery("#nothiddendiv span").length, 0, "Verify that first handler occurred and modified the DOM." );
-       equal( livec, 1, "Verify that second handler occurred even with nuked target." );
-
-       // Cleanup
-       jQuery("#nothiddendivchild").die("click");
-
-       // Verify that .live() ocurs and cancel buble in the same order as
-       // we would expect .bind() and .click() without delegation
-       var lived = 0, livee = 0;
-
-       // bind one pair in one order
-       jQuery("span#liveSpan1 a").live("click", function(){ lived++; return false; });
-       jQuery("span#liveSpan1").live("click", function(){ livee++; });
-
-       jQuery("span#liveSpan1 a").click();
-       equal( lived, 1, "Verify that only one first handler occurred." );
-       equal( livee, 0, "Verify that second handler doesn't." );
-
-       // and one pair in inverse
-       jQuery("span#liveSpan2").live("click", function(){ livee++; });
-       jQuery("span#liveSpan2 a").live("click", function(){ lived++; return false; });
-
-       lived = 0;
-       livee = 0;
-       jQuery("span#liveSpan2 a").click();
-       equal( lived, 1, "Verify that only one first handler occurred." );
-       equal( livee, 0, "Verify that second handler doesn't." );
-
-       // Cleanup
-       jQuery("span#liveSpan1 a").die("click");
-       jQuery("span#liveSpan1").die("click");
-       jQuery("span#liveSpan2 a").die("click");
-       jQuery("span#liveSpan2").die("click");
-
-       // Test this, target and currentTarget are correct
-       jQuery("span#liveSpan1").live("click", function(e){
-               equal( this.id, "liveSpan1", "Check the this within a live handler" );
-               equal( e.currentTarget.id, "liveSpan1", "Check the event.currentTarget within a live handler" );
-               equal( e.delegateTarget, document, "Check the event.delegateTarget within a live handler" );
-               equal( e.target.nodeName.toUpperCase(), "A", "Check the event.target within a live handler" );
-       });
-
-       jQuery("span#liveSpan1 a").click();
-
-       jQuery("span#liveSpan1").die("click");
-
-       // Work with deep selectors
-       livee = 0;
-
-       function clickB(){ livee++; }
-
-       jQuery("#nothiddendiv div").live("click", function(){ livee++; });
-       jQuery("#nothiddendiv div").live("click", clickB);
-       jQuery("#nothiddendiv div").live("mouseover", function(){ livee++; });
-
-       equal( livee, 0, "No clicks, deep selector." );
-
-       livee = 0;
-       jQuery("#nothiddendivchild").trigger("click");
-       equal( livee, 2, "Click, deep selector." );
-
-       livee = 0;
-       jQuery("#nothiddendivchild").trigger("mouseover");
-       equal( livee, 1, "Mouseover, deep selector." );
-
-       jQuery("#nothiddendiv div").die("mouseover");
-
-       livee = 0;
-       jQuery("#nothiddendivchild").trigger("click");
-       equal( livee, 2, "Click, deep selector." );
-
-       livee = 0;
-       jQuery("#nothiddendivchild").trigger("mouseover");
-       equal( livee, 0, "Mouseover, deep selector." );
-
-       jQuery("#nothiddendiv div").die("click", clickB);
-
-       livee = 0;
-       jQuery("#nothiddendivchild").trigger("click");
-       equal( livee, 1, "Click, deep selector." );
-
-       jQuery("#nothiddendiv div").die("click");
-
-       // blur a non-input element, we should force-fire its handlers
-       // regardless of whether it's burring or not (unlike browsers)
-       jQuery("#nothiddendiv div")
-               .live("blur", function(){
-                       ok( true, "Live div trigger blur." );
-               })
-               .trigger("blur")
-               .die("blur");
-});
-
-test("die all bound events", function(){
-       expect(1);
-
-       var count = 0;
-       var div = jQuery("div#nothiddendivchild");
-
-       div.live("click submit", function(){ count++; });
-       div.die();
-
-       div.trigger("click");
-       div.trigger("submit");
-
-       equal( count, 0, "Make sure no events were triggered." );
-});
-
-test("live with multiple events", function(){
-       expect(1);
-
-       var count = 0;
-       var div = jQuery("div#nothiddendivchild");
-
-       div.live("click submit", function(){ count++; });
-
-       div.trigger("click");
-       div.trigger("submit");
-
-       equal( count, 2, "Make sure both the click and submit were triggered." );
-
-       // manually clean up events from elements outside the fixture
-       div.die();
-});
-
-test("live with namespaces", function(){
-       expect(15);
-
-       var count1 = 0, count2 = 0;
-
-       jQuery("#liveSpan1").live("foo.bar", function(e){
-               equal( e.namespace, "bar", "namespace is bar" );
-               count1++;
-       });
-
-       jQuery("#liveSpan1").live("foo.zed", function(e){
-               equal( e.namespace, "zed", "namespace is zed" );
-               count2++;
-       });
-
-       jQuery("#liveSpan1").trigger("foo.bar");
-       equal( count1, 1, "Got live foo.bar" );
-       equal( count2, 0, "Got live foo.bar" );
-
-       count1 = 0; count2 = 0;
-
-       jQuery("#liveSpan1").trigger("foo.zed");
-       equal( count1, 0, "Got live foo.zed" );
-       equal( count2, 1, "Got live foo.zed" );
-
-       //remove one
-       count1 = 0; count2 = 0;
-
-       jQuery("#liveSpan1").die("foo.zed");
-       jQuery("#liveSpan1").trigger("foo.bar");
-
-       equal( count1, 1, "Got live foo.bar after dieing foo.zed" );
-       equal( count2, 0, "Got live foo.bar after dieing foo.zed" );
-
-       count1 = 0; count2 = 0;
-
-       jQuery("#liveSpan1").trigger("foo.zed");
-       equal( count1, 0, "Got live foo.zed" );
-       equal( count2, 0, "Got live foo.zed" );
-
-       //remove the other
-       jQuery("#liveSpan1").die("foo.bar");
-
-       count1 = 0; count2 = 0;
-
-       jQuery("#liveSpan1").trigger("foo.bar");
-       equal( count1, 0, "Did not respond to foo.bar after dieing it" );
-       equal( count2, 0, "Did not respond to foo.bar after dieing it" );
-
-       jQuery("#liveSpan1").trigger("foo.zed");
-       equal( count1, 0, "Did not trigger foo.zed again" );
-       equal( count2, 0, "Did not trigger foo.zed again" );
-});
-
-test("live with change", function(){
-       expect(8);
-
-       var selectChange = 0, checkboxChange = 0;
-
-       var select = jQuery("select[name='S1']");
-       select.live("change", function() {
-               selectChange++;
-       });
-
-       var checkbox = jQuery("#check2"),
-               checkboxFunction = function(){
-                       checkboxChange++;
-               };
-       checkbox.live("change", checkboxFunction);
-
-       // test click on select
-
-       // second click that changed it
-       selectChange = 0;
-       select[0].selectedIndex = select[0].selectedIndex ? 0 : 1;
-       select.trigger("change");
-       equal( selectChange, 1, "Change on click." );
-
-       // test keys on select
-       selectChange = 0;
-       select[0].selectedIndex = select[0].selectedIndex ? 0 : 1;
-       select.trigger("change");
-       equal( selectChange, 1, "Change on keyup." );
-
-       // test click on checkbox
-       checkbox.trigger("change");
-       equal( checkboxChange, 1, "Change on checkbox." );
-
-       // test blur/focus on text
-       var text = jQuery("#name"), textChange = 0, oldTextVal = text.val();
-       text.live("change", function() {
-               textChange++;
-       });
-
-       text.val(oldTextVal+"foo");
-       text.trigger("change");
-       equal( textChange, 1, "Change on text input." );
-
-       text.val(oldTextVal);
-       text.die("change");
-
-       // test blur/focus on password
-       var password = jQuery("#name"), passwordChange = 0, oldPasswordVal = password.val();
-       password.live("change", function() {
-               passwordChange++;
-       });
-
-       password.val(oldPasswordVal + "foo");
-       password.trigger("change");
-       equal( passwordChange, 1, "Change on password input." );
-
-       password.val(oldPasswordVal);
-       password.die("change");
-
-       // make sure die works
-
-       // die all changes
-       selectChange = 0;
-       select.die("change");
-       select[0].selectedIndex = select[0].selectedIndex ? 0 : 1;
-       select.trigger("change");
-       equal( selectChange, 0, "Die on click works." );
-
-       selectChange = 0;
-       select[0].selectedIndex = select[0].selectedIndex ? 0 : 1;
-       select.trigger("change");
-       equal( selectChange, 0, "Die on keyup works." );
-
-       // die specific checkbox
-       checkbox.die("change", checkboxFunction);
-       checkbox.trigger("change");
-       equal( checkboxChange, 1, "Die on checkbox." );
-});
-
-test("live with submit", function() {
-       expect(7);
-
-       var count1 = 0, count2 = 0;
-
-       jQuery("#testForm").live("submit", function(ev) {
-               count1++;
-               ev.preventDefault();
-       });
-
-       jQuery("body").live("submit", function(ev) {
-               count2++;
-               ev.preventDefault();
-       });
-
-       jQuery("#testForm input[name=sub1]").submit();
-       equal( count1, 1, "Verify form submit." );
-       equal( count2, 1, "Verify body submit." );
-
-       jQuery("#testForm input[name=sub1]").live("click", function(ev) {
-               ok( true, "cancelling submit still calls click handler" );
-       });
-
-       jQuery("#testForm input[name=sub1]")[0].click();
-       equal( count1, 2, "Verify form submit." );
-       equal( count2, 2, "Verify body submit." );
-
-       jQuery("#testForm button[name=sub4]")[0].click();
-       equal( count1, 3, "Verify form submit." );
-       equal( count2, 3, "Verify body submit." );
-
-       jQuery("#testForm").die("submit");
-       jQuery("#testForm input[name=sub1]").die("click");
-       jQuery("body").die("submit");
-});
-
-test("live with special events", function() {
-       expect(13);
-
-       jQuery.event.special["foo"] = {
-               setup: function( data, namespaces, handler ) {
-                       ok( true, "Setup run." );
-               },
-               teardown: function( namespaces ) {
-                       ok( true, "Teardown run." );
-               },
-               add: function( handleObj ) {
-                       ok( true, "Add run." );
-               },
-               remove: function( handleObj ) {
-                       ok( true, "Remove run." );
-               },
-               _default: function( event, arg ) {
-                       ok( event.type === "foo" && arg == 42, "Default run with correct args." );
-               }
-       };
-
-       // Run: setup, add
-       jQuery("#liveSpan1").live("foo.a", function(e){
-               ok( true, "Handler 1 run." );
-       });
-
-       // Run: add
-       jQuery("#liveSpan1").live("foo.b", function(e){
-               ok( true, "Handler 2 run." );
-       });
-
-       // Run: Handler 1, Handler 2, Default
-       jQuery("#liveSpan1").trigger("foo", 42);
-
-       // Run: Handler 1, Default
-       jQuery("#liveSpan1").trigger("foo.a", 42);
-
-       // Run: remove
-       jQuery("#liveSpan1").die("foo.a");
-
-       // Run: Handler 2, Default
-       jQuery("#liveSpan1").trigger("foo", 42);
-
-       // Run: remove, teardown
-       jQuery("#liveSpan1").die("foo");
-
-       delete jQuery.event.special["foo"];
-});
-
 test(".delegate()/.undelegate()", function() {
        expect(65);
 
@@ -2436,7 +1883,7 @@ test("delegate with change", function(){
        equal( textChange, 1, "Change on text input." );
 
        text.val(oldTextVal);
-       jQuery("#body").die("change");
+       jQuery("#body").undelegate("#name", "change");
 
        // test blur/focus on password
        var password = jQuery("#name"), passwordChange = 0, oldPasswordVal = password.val();