From c928ed432a164e7f6caa057e128db4a4c5040405 Mon Sep 17 00:00:00 2001 From: Dave Methvin Date: Tue, 18 Dec 2012 14:42:37 -0500 Subject: [PATCH] Remove .live() tests now in Migrate plugin. --- test/unit/event.js | 603 ++------------------------------------------- 1 file changed, 25 insertions(+), 578 deletions(-) diff --git a/test/unit/event.js b/test/unit/event.js index 50328be40..32355c9ad 100644 --- a/test/unit/event.js +++ b/test/unit/event.js @@ -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("").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(); -- 2.39.5