]> source.dussan.org Git - jquery.git/commitdiff
Ref #13554: Move redundant methods to event-alias.js. Close gh-1225.
authorMichał Gołębiowski <m.goleb@gmail.com>
Mon, 4 Mar 2013 02:22:11 +0000 (03:22 +0100)
committerRichard Gibson <richard.gibson@gmail.com>
Sun, 7 Apr 2013 04:48:58 +0000 (00:48 -0400)
(cherry picked from commits 8ca9f931ec311b6f73990eac7665451a28bceac3 84a94acae1ed7d65d91df235985e433d34486dc3 100d3c351604e1f9641098da2e78678b4e6d9cdf)

src/event-alias.js
src/event.js
test/unit/ajax.js
test/unit/data.js
test/unit/event.js
test/unit/manipulation.js

index 0a87c59655c47a13195df580dd9225148c6bdf78..b1a15e840e4e4372f5f6946a5ce4c903db1ad15b 100644 (file)
@@ -10,6 +10,23 @@ jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblcl
        };
 });
 
-jQuery.fn.hover = function( fnOver, fnOut ) {
-       return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
-};
+jQuery.fn.extend({
+       hover: function( fnOver, fnOut ) {
+               return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
+       },
+
+       bind: function( types, data, fn ) {
+               return this.on( types, null, data, fn );
+       },
+       unbind: function( types, fn ) {
+               return this.off( types, null, fn );
+       },
+
+       delegate: function( selector, types, data, fn ) {
+               return this.on( types, selector, data, fn );
+       },
+       undelegate: function( selector, types, fn ) {
+               // ( namespace ) or ( selector, types [, fn] )
+               return arguments.length === 1 ? this.off( selector, "**" ) : this.off( types, selector || "**", fn );
+       }
+});
index b0ce35c8100e997376a2b9bd4308c19bd6a8f149..8e5f705caef11b3017003786c14049271ce7f289 100644 (file)
@@ -971,21 +971,6 @@ jQuery.fn.extend({
                });
        },
 
-       bind: function( types, data, fn ) {
-               return this.on( types, null, data, fn );
-       },
-       unbind: function( types, fn ) {
-               return this.off( types, null, fn );
-       },
-
-       delegate: function( selector, types, data, fn ) {
-               return this.on( types, selector, data, fn );
-       },
-       undelegate: function( selector, types, fn ) {
-               // ( namespace ) or ( selector, types [, fn] )
-               return arguments.length === 1 ? this.off( selector, "**" ) : this.off( types, selector || "**", fn );
-       },
-
        trigger: function( type, data ) {
                return this.each(function() {
                        jQuery.event.trigger( type, data, this );
index a60664245a77857979df6b0ba70fa96bfc7b4d01..aa2f6361251dd3c7b032d72cd2954a8dec5f3096 100644 (file)
@@ -1627,13 +1627,13 @@ module( "ajax", {
                        type: "POST"
                });
 
-               jQuery( document ).bind( "ajaxStart ajaxStop", function() {
+               jQuery( document ).on( "ajaxStart ajaxStop", function() {
                        ok( false, "Global event triggered" );
                });
 
                jQuery("#qunit-fixture").append("<script src='data/evalScript.php'></script>");
 
-               jQuery( document ).unbind("ajaxStart ajaxStop");
+               jQuery( document ).off("ajaxStart ajaxStop");
        });
 
        asyncTest( "#11402 - jQuery.domManip() - script in comments are properly evaluated", 2, function() {
@@ -1906,7 +1906,7 @@ module( "ajax", {
                });
                jQuery( document ).ajaxComplete(function( e, xml, s ) {
                        strictEqual( s.dataType, "html", "Verify the load() dataType was html" );
-                       jQuery( document ).unbind("ajaxComplete");
+                       jQuery( document ).off("ajaxComplete");
                        start();
                });
                jQuery("#first").load("data/test3.html");
index 8f86d00c4d1913e50478f4503c30d25bd31c487d..d7e1bca920b07de2c046a5a16bc695aa8cf894cc 100644 (file)
@@ -88,7 +88,7 @@ test("jQuery.data({})", 25, function() {
 test("jQuery.data(window)", 25, function() {
        // remove bound handlers from window object to stop potential false positives caused by fix for #5280 in
        // transports/xhr.js
-       jQuery(window).unbind("unload");
+       jQuery(window).off("unload");
 
        dataTests(window);
 });
@@ -599,7 +599,7 @@ test("Triggering the removeData should not throw exceptions. (#10080)", function
        expect(1);
        stop();
        var frame = jQuery("#loadediframe");
-       jQuery(frame[0].contentWindow).bind("unload", function() {
+       jQuery(frame[0].contentWindow).on("unload", function() {
                ok(true, "called unload");
                start();
        });
index d38dbb8d1689e0c1f1fda8128e92aee6221770c8..ec086b371ec28d28aaa5d3339dd8960d94c4cb56 100644 (file)
@@ -14,23 +14,21 @@ test("null or undefined handler", function() {
        } catch (e) {}
 });
 
-test("bind(),on(),delegate() with non-null,defined data", function() {
+test("on() with non-null,defined data", function() {
 
-       expect(3);
+       expect(2);
 
        var handler = function( event, data ) {
                equal( data, 0, "non-null, defined data (zero) is correctly passed" );
        };
 
-       jQuery("#foo").bind("foo.bind", handler);
        jQuery("#foo").on("foo.on", handler);
-       jQuery("div").delegate("#foo", "foo.delegate", handler);
+       jQuery("div").on("foo.delegate", "#foo", handler);
 
        jQuery("#foo").trigger("foo", 0);
 
-       jQuery("#foo").unbind("foo.bind", handler);
        jQuery("#foo").off("foo.on", handler);
-       jQuery("div").undelegate("#foo", "foo.delegate");
+       jQuery("div").off("foo.delegate", "#foo");
 
 });
 
@@ -60,35 +58,35 @@ test("Handler changes and .trigger() order", function() {
        markup.remove();
 });
 
-test("bind(), with data", function() {
+test("on(), with data", function() {
        expect(4);
        var handler = function(event) {
-               ok( event.data, "bind() with data, check passed data exists" );
-               equal( event.data["foo"], "bar", "bind() with data, Check value of passed data" );
+               ok( event.data, "on() with data, check passed data exists" );
+               equal( event.data["foo"], "bar", "on() with data, Check value of passed data" );
        };
-       jQuery("#firstp").bind("click", {"foo": "bar"}, handler).trigger("click").unbind("click", handler);
+       jQuery("#firstp").on("click", {"foo": "bar"}, handler).trigger("click").off("click", handler);
 
        ok( !jQuery._data(jQuery("#firstp")[0], "events"), "Event handler unbound when using data." );
 
        var test = function(){};
        var handler2 = function(event) {
-               equal( event.data, test, "bind() with function data, Check value of passed data" );
+               equal( event.data, test, "on() with function data, Check value of passed data" );
        };
-       jQuery("#firstp").bind("click", test, handler2).trigger("click").unbind("click", handler2);
+       jQuery("#firstp").on("click", test, handler2).trigger("click").off("click", handler2);
 });
 
 test("click(), with data", function() {
        expect(3);
        var handler = function(event) {
-               ok( event.data, "bind() with data, check passed data exists" );
-               equal( event.data["foo"], "bar", "bind() with data, Check value of passed data" );
+               ok( event.data, "on() with data, check passed data exists" );
+               equal( event.data["foo"], "bar", "on() with data, Check value of passed data" );
        };
-       jQuery("#firstp").on( "click", {"foo": "bar"}, handler).trigger("click").unbind("click", handler);
+       jQuery("#firstp").on( "click", {"foo": "bar"}, handler).trigger("click").off("click", handler);
 
        ok( !jQuery._data(jQuery("#firstp")[0], "events"), "Event handler unbound when using data." );
 });
 
-test("bind(), with data, trigger with data", function() {
+test("on(), with data, trigger with data", function() {
        expect(4);
        var handler = function(event, data) {
                ok( event.data, "check passed data exists" );
@@ -96,10 +94,10 @@ test("bind(), with data, trigger with data", function() {
                ok( data, "Check trigger data" );
                equal( data.bar, "foo", "Check value of trigger data" );
        };
-       jQuery("#firstp").bind("click", {foo: "bar"}, handler).trigger("click", [{bar: "foo"}]).unbind("click", handler);
+       jQuery("#firstp").on("click", {foo: "bar"}, handler).trigger("click", [{bar: "foo"}]).off("click", handler);
 });
 
-test("bind(), multiple events at once", function() {
+test("on(), multiple events at once", function() {
        expect(2);
        var clickCounter = 0,
                mouseoverCounter = 0;
@@ -112,12 +110,12 @@ test("bind(), multiple events at once", function() {
                }
 
        };
-       jQuery("#firstp").bind("click mouseover", handler).trigger("click").trigger("mouseover");
-       equal( clickCounter, 1, "bind() with multiple events at once" );
-       equal( mouseoverCounter, 1, "bind() with multiple events at once" );
+       jQuery("#firstp").on("click mouseover", handler).trigger("click").trigger("mouseover");
+       equal( clickCounter, 1, "on() with multiple events at once" );
+       equal( mouseoverCounter, 1, "on() with multiple events at once" );
 });
 
-test("bind(), five events at once", function() {
+test("on(), five events at once", function() {
        expect(1);
 
        var count = 0,
@@ -125,20 +123,20 @@ test("bind(), five events at once", function() {
                        count++;
                };
 
-       jQuery("#firstp").bind("click mouseover foo bar baz", handler)
+       jQuery("#firstp").on("click mouseover foo bar baz", handler)
        .trigger("click").trigger("mouseover")
                .trigger("foo").trigger("bar")
                .trigger("baz");
 
-       equal( count, 5, "bind() five events at once" );
+       equal( count, 5, "on() five events at once" );
 });
 
-test("bind(), multiple events at once and namespaces", function() {
+test("on(), multiple events at once and namespaces", function() {
        expect(7);
 
        var cur, obj = {};
 
-       var div = jQuery("<div/>").bind("focusin.a", function(e) {
+       var div = jQuery("<div/>").on("focusin.a", function(e) {
                equal( e.type, cur, "Verify right single event was fired." );
        });
 
@@ -148,7 +146,7 @@ test("bind(), multiple events at once and namespaces", function() {
        // manually clean up detached elements
        div.remove();
 
-       div = jQuery("<div/>").bind("click mouseover", obj, function(e) {
+       div = jQuery("<div/>").on("click mouseover", obj, function(e) {
                equal( e.type, cur, "Verify right multi event was fired." );
                equal( e.data, obj, "Make sure the data came in correctly." );
        });
@@ -162,7 +160,7 @@ test("bind(), multiple events at once and namespaces", function() {
        // manually clean up detached elements
        div.remove();
 
-       div = jQuery("<div/>").bind("focusin.a focusout.b", function(e) {
+       div = jQuery("<div/>").on("focusin.a focusout.b", function(e) {
                equal( e.type, cur, "Verify right multi event was fired." );
        });
 
@@ -176,10 +174,10 @@ test("bind(), multiple events at once and namespaces", function() {
        div.remove();
 });
 
-test("bind(), namespace with special add", function() {
+test("on(), namespace with special add", function() {
        expect(27);
 
-       var div = jQuery("<div/>").bind("test", function(e) {
+       var div = jQuery("<div/>").on("test", function(e) {
                ok( true, "Test event fired." );
        });
 
@@ -208,12 +206,12 @@ test("bind(), namespace with special add", function() {
                }
        };
 
-       div.bind("test.a", {"x": 1}, function(e) {
+       div.on("test.a", {"x": 1}, function(e) {
                ok( !!e.xyz, "Make sure that the data is getting passed through." );
                equal( e.data["x"], 1, "Make sure data is attached properly." );
        });
 
-       div.bind("test.b", {"x": 2}, function(e) {
+       div.on("test.b", {"x": 2}, function(e) {
                ok( !!e.xyz, "Make sure that the data is getting passed through." );
                equal( e.data["x"], 2, "Make sure data is attached properly." );
        });
@@ -228,9 +226,9 @@ test("bind(), namespace with special add", function() {
        div.trigger("test.b", { year: 1982 });
 
        // Should trigger 4
-       div.unbind("test");
+       div.off("test");
 
-       div = jQuery("<div/>").bind("test", function(e) {
+       div = jQuery("<div/>").on("test", function(e) {
                ok( true, "Test event fired." );
        });
 
@@ -240,15 +238,15 @@ test("bind(), namespace with special add", function() {
        delete jQuery.event.special["test"];
 });
 
-test("bind(), no data", function() {
+test("on(), no data", function() {
        expect(1);
        var handler = function(event) {
                ok ( !event.data, "Check that no data is added to the event object" );
        };
-       jQuery("#firstp").bind("click", handler).trigger("click");
+       jQuery("#firstp").on("click", handler).trigger("click");
 });
 
-test("bind/one/unbind(Object)", function(){
+test("on/one/off(Object)", function(){
        expect(6);
 
        var clickCounter = 0, mouseoverCounter = 0;
@@ -278,7 +276,7 @@ test("bind/one/unbind(Object)", function(){
 
        var $elem = jQuery("#firstp")
                // Regular bind
-               .bind({
+               .on({
                        "click":handler,
                        "mouseover":handler
                })
@@ -290,24 +288,24 @@ test("bind/one/unbind(Object)", function(){
 
        trigger();
 
-       equal( clickCounter, 3, "bind(Object)" );
-       equal( mouseoverCounter, 3, "bind(Object)" );
+       equal( clickCounter, 3, "on(Object)" );
+       equal( mouseoverCounter, 3, "on(Object)" );
 
        trigger();
-       equal( clickCounter, 4, "bind(Object)" );
-       equal( mouseoverCounter, 4, "bind(Object)" );
+       equal( clickCounter, 4, "on(Object)" );
+       equal( mouseoverCounter, 4, "on(Object)" );
 
-       jQuery("#firstp").unbind({
+       jQuery("#firstp").off({
                "click":handler,
                "mouseover":handler
        });
 
        trigger();
-       equal( clickCounter, 4, "bind(Object)" );
-       equal( mouseoverCounter, 4, "bind(Object)" );
+       equal( clickCounter, 4, "on(Object)" );
+       equal( mouseoverCounter, 4, "on(Object)" );
 });
 
-test("on/off(Object), delegate/undelegate(String, Object)", function() {
+test("on/off(Object), on/off(Object, String)", function() {
        expect(6);
 
        var clickCounter = 0,
@@ -329,17 +327,17 @@ test("on/off(Object), delegate/undelegate(String, Object)", function() {
        }
 
        jQuery( document ).on( events, "#firstp a" );
-       $p.delegate( "a", events, 2 );
+       $p.on( events, "a", 2 );
 
        trigger();
-       equal( clickCounter, 3, "on/delegate" );
-       equal( mouseoverCounter, 3, "on/delegate" );
+       equal( clickCounter, 3, "on" );
+       equal( mouseoverCounter, 3, "on" );
 
-       $p.undelegate( "a", events );
+       $p.off( events, "a" );
 
        trigger();
-       equal( clickCounter, 4, "undelegate" );
-       equal( mouseoverCounter, 4, "undelegate" );
+       equal( clickCounter, 4, "off" );
+       equal( mouseoverCounter, 4, "off" );
 
        jQuery( document ).off( events, "#firstp a" );
 
@@ -348,7 +346,7 @@ test("on/off(Object), delegate/undelegate(String, Object)", function() {
        equal( mouseoverCounter, 4, "off" );
 });
 
-test("on/delegate immediate propagation", function() {
+test("on immediate propagation", function() {
        expect(2);
 
        var lastClick,
@@ -368,19 +366,19 @@ test("on/delegate immediate propagation", function() {
        jQuery( document ).off( "click", "#firstp a" );
 
        lastClick = "";
-       $p.delegate( "a", "click", function(e) {
+       $p.on( "click", "a", function(e) {
                lastClick = "click1";
                e.stopImmediatePropagation();
        });
-       $p.delegate( "a", "click", function(e) {
+       $p.on( "click", "a", function(e) {
                lastClick = "click2";
        });
        $a.trigger( "click" );
-       equal( lastClick, "click1", "delegate stopImmediatePropagation" );
-       $p.undelegate( "click" );
+       equal( lastClick, "click1", "on stopImmediatePropagation" );
+       $p.off( "click", "**" );
 });
 
-test("bind/delegate bubbling, isDefaultPrevented", function() {
+test("on bubbling, isDefaultPrevented", function() {
        expect(2);
        var $anchor2 = jQuery( "#anchor2" ),
                $main = jQuery( "#qunit-fixture" ),
@@ -398,7 +396,7 @@ test("bind/delegate bubbling, isDefaultPrevented", function() {
        $anchor2.on( "click", function(e) {
                e.preventDefault();
        });
-       $main.delegate("#foo", "click", function(e) {
+       $main.on("click", "#foo", function(e) {
                var orig = e.originalEvent;
 
                if ( typeof(orig.defaultPrevented) === "boolean" || typeof(orig.returnValue) === "boolean" || orig["getPreventDefault"] ) {
@@ -410,54 +408,54 @@ test("bind/delegate bubbling, isDefaultPrevented", function() {
                }
        });
        fakeClick( $anchor2 );
-       $anchor2.unbind( "click" );
-       $main.undelegate( "click" );
+       $anchor2.off( "click" );
+       $main.off( "click", "**" );
        $anchor2.on( "click", function(e) {
                // Let the default action occur
        });
-       $main.delegate("#foo", "click", function(e) {
+       $main.on("click", "#foo", function(e) {
                equal( e.isDefaultPrevented(), false, "isDefaultPrevented false passed to bubbled event" );
        });
        fakeClick( $anchor2 );
-       $anchor2.unbind( "click" );
-       $main.undelegate( "click" );
+       $anchor2.off( "click" );
+       $main.off( "click", "**" );
 });
 
-test("bind(), iframes", function() {
+test("on(), iframes", function() {
        expect( 1 );
 
        // events don't work with iframes, see #939 - this test fails in IE because of contentDocument
        var doc = jQuery("#loadediframe").contents();
 
-       jQuery("div", doc).bind("click", function() {
+       jQuery("div", doc).on("click", function() {
                ok( true, "Binding to element inside iframe" );
-       }).trigger("click").unbind("click");
+       }).trigger("click").off("click");
 });
 
-test("bind(), trigger change on select", function() {
+test("on(), trigger change on select", function() {
        expect(5);
        var counter = 0;
        function selectOnChange(event) {
                equal( event.data, counter++, "Event.data is not a global event object" );
        }
        jQuery("#form select").each(function(i){
-               jQuery(this).bind("change", i, selectOnChange);
+               jQuery(this).on("change", i, selectOnChange);
        }).trigger("change");
 });
 
-test("bind(), namespaced events, cloned events", 18, function() {
+test("on(), namespaced events, cloned events", 18, function() {
        var firstp = jQuery( "#firstp" );
 
-       firstp.bind("custom.test",function(e){
+       firstp.on("custom.test",function(e){
                ok(false, "Custom event triggered");
        });
 
-       firstp.bind("click",function(e){
+       firstp.on("click",function(e){
                ok(true, "Normal click triggered");
                equal( e.type + e.namespace, "click", "Check that only click events trigger this fn" );
        });
 
-       firstp.bind("click.test",function(e){
+       firstp.on("click.test",function(e){
                var check = "click";
                ok( true, "Namespaced click triggered" );
                if ( e.namespace ) {
@@ -476,20 +474,20 @@ test("bind(), namespaced events, cloned events", 18, function() {
        firstp.trigger("click.test");
 
        // Remove only the one fn
-       firstp.unbind("click.test");
+       firstp.off("click.test");
 
        // Trigger the remaining fn (4)
        firstp.trigger("click");
 
        // Remove the remaining namespaced fn
-       firstp.unbind(".test");
+       firstp.off(".test");
 
        // Try triggering the custom event (0)
        firstp.trigger("custom");
 
        // using contents will get comments regular, text, and comment nodes
-       jQuery("#nonnodes").contents().bind("tester", function () {
-               equal(this.nodeType, 1, "Check node,textnode,comment bind just does real nodes" );
+       jQuery("#nonnodes").contents().on("tester", function () {
+               equal(this.nodeType, 1, "Check node,textnode,comment on just does real nodes" );
        }).trigger("tester");
 
        // Make sure events stick with appendTo'd elements (which are cloned) #2027
@@ -497,7 +495,7 @@ test("bind(), namespaced events, cloned events", 18, function() {
        ok( jQuery("a.test").eq(0).triggerHandler("click") === false, "Handler is bound to appendTo'd elements" );
 });
 
-test("bind(), multi-namespaced events", function() {
+test("on(), multi-namespaced events", function() {
        expect(6);
 
        var order = [
@@ -513,25 +511,25 @@ test("bind(), multi-namespaced events", function() {
                deepEqual(name, order.shift(), msg);
        }
 
-       jQuery("#firstp").bind("custom.test",function(e){
+       jQuery("#firstp").on("custom.test",function(e){
                check("custom.test", "Custom event triggered");
        });
 
-       jQuery("#firstp").bind("custom.test2",function(e){
+       jQuery("#firstp").on("custom.test2",function(e){
                check("custom.test2", "Custom event triggered");
        });
 
-       jQuery("#firstp").bind("click.test",function(e){
+       jQuery("#firstp").on("click.test",function(e){
                check("click.test", "Normal click triggered");
        });
 
-       jQuery("#firstp").bind("click.test.abc",function(e){
+       jQuery("#firstp").on("click.test.abc",function(e){
                check("click.test.abc", "Namespaced click triggered");
        });
 
-       // Those would not trigger/unbind (#5303)
+       // Those would not trigger/off (#5303)
        jQuery("#firstp").trigger("click.a.test");
-       jQuery("#firstp").unbind("click.a.test");
+       jQuery("#firstp").off("click.a.test");
 
        // Trigger both bound fn (1)
        jQuery("#firstp").trigger("click.test.abc");
@@ -543,13 +541,13 @@ test("bind(), multi-namespaced events", function() {
        jQuery("#firstp").trigger("click.test");
 
        // Remove only the one fn
-       jQuery("#firstp").unbind("click.abc");
+       jQuery("#firstp").off("click.abc");
 
        // Trigger the remaining fn (1)
        jQuery("#firstp").trigger("click");
 
        // Remove the remaining fn
-       jQuery("#firstp").unbind(".test");
+       jQuery("#firstp").off(".test");
 
        // Trigger the remaining fn (1)
        jQuery("#firstp").trigger("custom");
@@ -571,31 +569,31 @@ test("namespace-only event binding is a no-op", function(){
                .off("whoops");
 });
 
-test("bind(), with same function", function() {
+test("on(), with same function", function() {
        expect(2);
 
        var count = 0, func = function(){
                count++;
        };
 
-       jQuery("#liveHandlerOrder").bind("foo.bar", func).bind("foo.zar", func);
+       jQuery("#liveHandlerOrder").on("foo.bar", func).on("foo.zar", func);
        jQuery("#liveHandlerOrder").trigger("foo.bar");
 
        equal(count, 1, "Verify binding function with multiple namespaces." );
 
-       jQuery("#liveHandlerOrder").unbind("foo.bar", func).unbind("foo.zar", func);
+       jQuery("#liveHandlerOrder").off("foo.bar", func).off("foo.zar", func);
        jQuery("#liveHandlerOrder").trigger("foo.bar");
 
        equal(count, 1, "Verify that removing events still work." );
 });
 
-test("bind(), make sure order is maintained", function() {
+test("on(), make sure order is maintained", function() {
        expect(1);
 
        var elem = jQuery("#firstp"), log = [], check = [];
 
        jQuery.each( new Array(100), function( i ) {
-               elem.bind( "click", function(){
+               elem.on( "click", function(){
                        log.push( i );
                });
 
@@ -607,72 +605,72 @@ test("bind(), make sure order is maintained", function() {
 
        equal( log.join(","), check.join(","), "Make sure order was maintained." );
 
-       elem.unbind("click");
+       elem.off("click");
 });
 
-test("bind(), with different this object", function() {
+test("on(), with different this object", function() {
        expect(4);
        var thisObject = { myThis: true },
                data = { myData: true },
                handler1 = function( event ) {
-                       equal( this, thisObject, "bind() with different this object" );
+                       equal( this, thisObject, "on() with different this object" );
                },
                handler2 = function( event ) {
-                       equal( this, thisObject, "bind() with different this object and data" );
-                       equal( event.data, data, "bind() with different this object and data" );
+                       equal( this, thisObject, "on() with different this object and data" );
+                       equal( event.data, data, "on() with different this object and data" );
                };
 
        jQuery("#firstp")
-               .bind("click", jQuery.proxy(handler1, thisObject)).trigger("click").unbind("click", handler1)
-               .bind("click", data, jQuery.proxy(handler2, thisObject)).trigger("click").unbind("click", handler2);
+               .on("click", jQuery.proxy(handler1, thisObject)).trigger("click").off("click", handler1)
+               .on("click", data, jQuery.proxy(handler2, thisObject)).trigger("click").off("click", handler2);
 
        ok( !jQuery._data(jQuery("#firstp")[0], "events"), "Event handler unbound when using different this object and data." );
 });
 
-test("bind(name, false), unbind(name, false)", function() {
+test("on(name, false), off(name, false)", function() {
        expect(3);
 
        var main = 0;
-       jQuery("#qunit-fixture").bind("click", function(e){ main++; });
+       jQuery("#qunit-fixture").on("click", function(e){ main++; });
        jQuery("#ap").trigger("click");
        equal( main, 1, "Verify that the trigger happened correctly." );
 
        main = 0;
-       jQuery("#ap").bind("click", false);
+       jQuery("#ap").on("click", false);
        jQuery("#ap").trigger("click");
        equal( main, 0, "Verify that no bubble happened." );
 
        main = 0;
-       jQuery("#ap").unbind("click", false);
+       jQuery("#ap").off("click", false);
        jQuery("#ap").trigger("click");
        equal( main, 1, "Verify that the trigger happened correctly." );
 
        // manually clean up events from elements outside the fixture
-       jQuery("#qunit-fixture").unbind("click");
+       jQuery("#qunit-fixture").off("click");
 });
 
-test("delegate(selector, name, false), undelegate(selector, name, false)", function() {
+test("on(name, selector, false), off(name, selector, false)", function() {
        expect(3);
 
        var main = 0;
 
-       jQuery("#qunit-fixture").delegate("#ap", "click", function(e){ main++; });
+       jQuery("#qunit-fixture").on("click", "#ap", function(e){ main++; });
        jQuery("#ap").trigger("click");
        equal( main, 1, "Verify that the trigger happened correctly." );
 
        main = 0;
-       jQuery("#ap").delegate("#groups", "click", false);
+       jQuery("#ap").on("click", "#groups", false);
        jQuery("#groups").trigger("click");
        equal( main, 0, "Verify that no bubble happened." );
 
        main = 0;
-       jQuery("#ap").undelegate("#groups", "click", false);
+       jQuery("#ap").off("click", "#groups", false);
        jQuery("#groups").trigger("click");
        equal( main, 1, "Verify that the trigger happened correctly." );
-       jQuery("#qunit-fixture").undelegate("#ap", "click");
+       jQuery("#qunit-fixture").off("click", "#ap");
 });
 
-test("bind()/trigger()/unbind() on plain object", function() {
+test("on()/trigger()/off() on plain object", function() {
        expect( 7 );
 
        var obj = {};
@@ -681,9 +679,9 @@ test("bind()/trigger()/unbind() on plain object", function() {
        jQuery(obj).trigger("test");
 
        // Make sure it doesn't complain when no events are found
-       jQuery(obj).unbind("test");
+       jQuery(obj).off("test");
 
-       jQuery(obj).bind({
+       jQuery(obj).on({
                "test": function() {
                        ok( true, "Custom event run." );
                },
@@ -702,21 +700,21 @@ test("bind()/trigger()/unbind() on plain object", function() {
        jQuery(obj).trigger("test");
        jQuery(obj).trigger("submit");
 
-       jQuery(obj).unbind("test");
-       jQuery(obj).unbind("submit");
+       jQuery(obj).off("test");
+       jQuery(obj).off("submit");
 
        // Should trigger 0
        jQuery(obj).trigger("test");
 
        // Make sure it doesn't complain when no events are found
-       jQuery(obj).unbind("test");
+       jQuery(obj).off("test");
 
        equal( obj && obj[ jQuery.expando ] &&
                        obj[ jQuery.expando ][ jQuery.expando ] &&
                        obj[ jQuery.expando ][ jQuery.expando ]["events"], undefined, "Make sure events object is removed" );
 });
 
-test("unbind(type)", function() {
+test("off(type)", function() {
        expect( 1 );
 
        var $elem = jQuery("#firstp"),
@@ -727,42 +725,42 @@ test("unbind(type)", function() {
        }
 
        message = "unbind passing function";
-       $elem.bind("error1", error).unbind("error1", error).triggerHandler("error1");
+       $elem.on("error1", error).off("error1", error).triggerHandler("error1");
 
        message = "unbind all from event";
-       $elem.bind("error1", error).unbind("error1").triggerHandler("error1");
+       $elem.on("error1", error).off("error1").triggerHandler("error1");
 
        message = "unbind all";
-       $elem.bind("error1", error).unbind().triggerHandler("error1");
+       $elem.on("error1", error).off().triggerHandler("error1");
 
        message = "unbind many with function";
-       $elem.bind("error1 error2",error)
-               .unbind("error1 error2", error )
+       $elem.on("error1 error2",error)
+               .off("error1 error2", error )
                .trigger("error1").triggerHandler("error2");
 
        message = "unbind many"; // #3538
-       $elem.bind("error1 error2", error)
-               .unbind("error1 error2")
+       $elem.on("error1 error2", error)
+               .off("error1 error2")
                .trigger("error1").triggerHandler("error2");
 
        message = "unbind without a type or handler";
-       $elem.bind("error1 error2.test",error)
-               .unbind()
+       $elem.on("error1 error2.test",error)
+               .off()
                .trigger("error1").triggerHandler("error2");
 
        // Should only unbind the specified function
-       jQuery( document ).bind( "click", function(){
+       jQuery( document ).on( "click", function(){
                ok( true, "called handler after selective removal");
        });
        var func = function(){ };
        jQuery( document )
-               .bind( "click", func )
-               .unbind( "click", func )
+               .on( "click", func )
+               .off( "click", func )
                .trigger("click")
-               .unbind( "click" );
+               .off( "click" );
 });
 
-test("unbind(eventObject)", function() {
+test("off(eventObject)", function() {
        expect(4);
 
        var $elem = jQuery("#firstp"),
@@ -776,25 +774,25 @@ test("unbind(eventObject)", function() {
 
        $elem
                // This handler shouldn't be unbound
-               .bind("foo", function(){
+               .on("foo", function(){
                        num += 1;
                })
-               .bind("foo", function(e){
-                       $elem.unbind( e );
+               .on("foo", function(e){
+                       $elem.off( e );
                        num += 2;
                })
                // Neither this one
-               .bind("bar", function(){
+               .on("bar", function(){
                        num += 4;
                });
 
        assert( 7 );
        assert( 5 );
 
-       $elem.unbind("bar");
+       $elem.off("bar");
        assert( 1 );
 
-       $elem.unbind();
+       $elem.off();
        assert( 0 );
 });
 
@@ -809,11 +807,11 @@ if ( jQuery.fn.hover ) {
                jQuery("#firstp")
                        .hover(handler1, handler2)
                        .mouseenter().mouseleave()
-                       .unbind("mouseenter", handler1)
-                       .unbind("mouseleave", handler2)
+                       .off("mouseenter", handler1)
+                       .off("mouseleave", handler2)
                        .hover(handler1)
                        .mouseenter().mouseleave()
-                       .unbind("mouseenter mouseleave", handler1)
+                       .off("mouseenter mouseleave", handler1)
                        .mouseenter().mouseleave();
 
                equal( times, 4, "hover handlers fired" );
@@ -841,7 +839,7 @@ test("withinElement implemented with jQuery.contains()", function() {
 
        jQuery("#qunit-fixture").append("<div id='jc-outer'><div id='jc-inner'></div></div>");
 
-       jQuery("#jc-outer").bind("mouseenter mouseleave", function( event ) {
+       jQuery("#jc-outer").on("mouseenter mouseleave", function( event ) {
 
                equal( this.id, "jc-outer", this.id + " " + event.type );
 
@@ -849,7 +847,7 @@ test("withinElement implemented with jQuery.contains()", function() {
 
        jQuery("#jc-inner").trigger("mousenter");
 
-       jQuery("#jc-outer").unbind("mouseenter mouseleave").remove();
+       jQuery("#jc-outer").off("mouseenter mouseleave").remove();
        jQuery("#jc-inner").remove();
 
 });
@@ -880,7 +878,7 @@ if ( jQuery.fn.click ) {
                expect(6);
 
                var elem = jQuery("<li><a href='#'>Change location</a></li>").prependTo("#firstUL");
-               elem.find("a").bind("click", function() {
+               elem.find("a").on("click", function() {
                        var close = jQuery("spanx", this); // same with jQuery(this).find("span");
                        equal( close.length, 0, "Context element does not exist, length must be zero" );
                        ok( !close[0], "Context element does not exist, direct access to element must return undefined" );
@@ -928,12 +926,12 @@ test("trigger() bubbling", function() {
 
        var win = 0, doc = 0, html = 0, body = 0, main = 0, ap = 0;
 
-       jQuery(window).bind("click", function(e){ win++; });
-       jQuery(document).bind("click", function(e){ if ( e.target !== document) { doc++; } });
-       jQuery("html").bind("click", function(e){ html++; });
-       jQuery("body").bind("click", function(e){ body++; });
-       jQuery("#qunit-fixture").bind("click", function(e){ main++; });
-       jQuery("#ap").bind("click", function(){ ap++; return false; });
+       jQuery(window).on("click", function(e){ win++; });
+       jQuery(document).on("click", function(e){ if ( e.target !== document) { doc++; } });
+       jQuery("html").on("click", function(e){ html++; });
+       jQuery("body").on("click", function(e){ body++; });
+       jQuery("#qunit-fixture").on("click", function(e){ main++; });
+       jQuery("#ap").on("click", function(){ ap++; return false; });
 
        jQuery("html").trigger("click");
        equal( win, 1, "HTML bubble" );
@@ -964,8 +962,8 @@ test("trigger() bubbling", function() {
        equal( win, 4, "doc bubble" );
 
        // manually clean up events from elements outside the fixture
-       jQuery(document).unbind("click");
-       jQuery("html, body, #qunit-fixture").unbind("click");
+       jQuery(document).off("click");
+       jQuery("html, body, #qunit-fixture").off("click");
 });
 
 test("trigger(type, [data], [fn])", function() {
@@ -1003,7 +1001,7 @@ test("trigger(type, [data], [fn])", function() {
 
        // Triggers handlers and native
        // Trigger 5
-       $elem.bind("click", handler).trigger("click", [1, "2", "abc"]);
+       $elem.on("click", handler).trigger("click", [1, "2", "abc"]);
 
        // Simulate a "native" click
        $elem[0].click = function(){
@@ -1026,7 +1024,7 @@ test("trigger(type, [data], [fn])", function() {
 
        pass = true;
        try {
-               jQuery("#qunit-fixture table").eq(0).bind("test:test", function(){}).trigger("test:test");
+               jQuery("#qunit-fixture table").eq(0).on("test:test", function(){}).trigger("test:test");
        } catch (e) {
                pass = false;
        }
@@ -1036,14 +1034,14 @@ test("trigger(type, [data], [fn])", function() {
 
        // Make sure it can be prevented locally
        form.on( "submit", function(){
-               ok( true, "Local bind still works." );
+               ok( true, "Local `on` still works." );
                return false;
        });
 
        // Trigger 1
        form.trigger("submit");
 
-       form.unbind("submit");
+       form.off("submit");
 
        jQuery(document).on( "submit", function(){
                ok( true, "Make sure bubble works up to document." );
@@ -1053,7 +1051,7 @@ test("trigger(type, [data], [fn])", function() {
        // Trigger 1
        form.trigger("submit");
 
-       jQuery(document).unbind("submit");
+       jQuery(document).off("submit");
 
        form.remove();
 });
@@ -1152,7 +1150,7 @@ test("trigger(eventObject, [data], [fn])", function() {
        equal( event.isPropagationStopped(), true, "Verify isPropagationStopped" );
        equal( event.isImmediatePropagationStopped(), true, "Verify isPropagationStopped" );
 
-       $parent.bind("foo",function(e){
+       $parent.on("foo",function(e){
                // Tries bubbling
                equal( e.type, "foo", "Verify event type when passed passing an event object" );
                equal( e.target.id, "child", "Verify event.target when passed passing an event object" );
@@ -1168,15 +1166,15 @@ test("trigger(eventObject, [data], [fn])", function() {
        // test with a literal object
        $child.trigger({"type": "foo", "secret": "boo!"});
 
-       $parent.unbind();
+       $parent.off();
 
        function error(){
                ok( false, "This assertion shouldn't be reached");
        }
 
-       $parent.bind("foo", error );
+       $parent.on("foo", error );
 
-       $child.bind("foo",function(e, a, b, c ){
+       $child.on("foo",function(e, a, b, c ){
                equal( arguments.length, 4, "Check arguments length");
                equal( a, 1, "Check first custom argument");
                equal( b, 2, "Check second custom argument");
@@ -1194,17 +1192,17 @@ test("trigger(eventObject, [data], [fn])", function() {
 
        // We should add this back in when we want to test the order
        // in which event handlers are iterated.
-       //$child.bind("foo", error );
+       //$child.on("foo", error );
 
        event = new jQuery.Event("foo");
-       $child.trigger( event, [1,2,3] ).unbind();
+       $child.trigger( event, [1,2,3] ).off();
        equal( event.result, "result", "Check event.result attribute");
 
        // Will error if it bubbles
        $child.triggerHandler("foo");
 
-       $child.unbind();
-       $parent.unbind().remove();
+       $child.off();
+       $parent.off().remove();
 
        // Ensure triggerHandler doesn't molest its event object (#xxx)
        event = jQuery.Event( "zowie" );
@@ -1481,9 +1479,9 @@ test("jQuery.Event( type, props )", function() {
 
        ok( "keyCode" in event, "Special 'keyCode' property exists" );
 
-       jQuery("body").bind( "keydown", handler ).trigger( event );
+       jQuery("body").on( "keydown", handler ).trigger( event );
 
-       jQuery("body").unbind( "keydown" );
+       jQuery("body").off( "keydown" );
 
 });
 
@@ -1532,15 +1530,15 @@ test("jQuery.Event properties", function(){
        }
 });
 
-test(".delegate()/.undelegate()", function() {
+test(".on()/.off()", function() {
        expect(65);
 
        var submit = 0, div = 0, livea = 0, liveb = 0;
 
-       jQuery("#body").delegate("#qunit-fixture div", "submit", function(){ submit++; return false; });
-       jQuery("#body").delegate("#qunit-fixture div", "click", function(){ div++; });
-       jQuery("#body").delegate("div#nothiddendiv", "click", function(){ livea++; });
-       jQuery("#body").delegate("div#nothiddendivchild", "click", function(){ liveb++; });
+       jQuery("#body").on("submit", "#qunit-fixture div", function(){ submit++; return false; });
+       jQuery("#body").on("click", "#qunit-fixture div", function(){ div++; });
+       jQuery("#body").on("click", "div#nothiddendiv", function(){ livea++; });
+       jQuery("#body").on("click", "div#nothiddendivchild", function(){ liveb++; });
 
        // Nothing should trigger on the body
        jQuery("body").trigger("click");
@@ -1576,31 +1574,31 @@ test(".delegate()/.undelegate()", function() {
        // 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, "undelegate Click on inner div" );
-       equal( div, 2, "undelegate Click on inner div" );
-       equal( livea, 1, "undelegate Click on inner div" );
-       equal( liveb, 1, "undelegate Click on inner div" );
+       equal( submit, 0, "off Click on inner div" );
+       equal( div, 2, "off Click on inner div" );
+       equal( livea, 1, "off Click on inner div" );
+       equal( liveb, 1, "off Click on inner div" );
 
        // Now make sure that the removal works
        submit = 0; div = 0; livea = 0; liveb = 0;
-       jQuery("#body").undelegate("div#nothiddendivchild", "click");
+       jQuery("#body").off("click", "div#nothiddendivchild");
        jQuery("div#nothiddendivchild").trigger("click");
-       equal( submit, 0, "undelegate Click on inner div" );
-       equal( div, 2, "undelegate Click on inner div" );
-       equal( livea, 1, "undelegate Click on inner div" );
-       equal( liveb, 0, "undelegate Click on inner div" );
+       equal( submit, 0, "off Click on inner div" );
+       equal( div, 2, "off Click on inner div" );
+       equal( livea, 1, "off Click on inner div" );
+       equal( liveb, 0, "off 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, "undelegate Click on inner div" );
-       equal( div, 1, "undelegate Click on inner div" );
-       equal( livea, 1, "undelegate Click on inner div" );
-       equal( liveb, 0, "undelegate Click on inner div" );
+       equal( submit, 0, "off Click on inner div" );
+       equal( div, 1, "off Click on inner div" );
+       equal( livea, 1, "off Click on inner div" );
+       equal( liveb, 0, "off Click on inner div" );
 
        // Make sure that stopPropagation doesn't stop live events
        submit = 0; div = 0; livea = 0; liveb = 0;
-       jQuery("#body").delegate("div#nothiddendivchild", "click", function(e){ liveb++; e.stopPropagation(); });
+       jQuery("#body").on("click", "div#nothiddendivchild", 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" );
@@ -1613,71 +1611,71 @@ test(".delegate()/.undelegate()", function() {
        event.button = 1;
        jQuery("div#nothiddendiv").trigger(event);
 
-       equal( livea, 0, "delegate secondary click" );
+       equal( livea, 0, "on secondary click" );
 
-       jQuery("#body").undelegate("div#nothiddendivchild", "click");
-       jQuery("#body").undelegate("div#nothiddendiv", "click");
-       jQuery("#body").undelegate("#qunit-fixture div", "click");
-       jQuery("#body").undelegate("#qunit-fixture div", "submit");
+       jQuery("#body").off("click", "div#nothiddendivchild");
+       jQuery("#body").off("click", "div#nothiddendiv");
+       jQuery("#body").off("click", "#qunit-fixture div");
+       jQuery("#body").off("submit", "#qunit-fixture div");
 
        // Test binding with a different context
-       var clicked = 0, container = jQuery("#qunit-fixture")[0];
-       jQuery("#qunit-fixture").delegate("#foo", "click", function(e){ clicked++; });
+       var clicked = 0;
+       jQuery("#qunit-fixture").on("click", "#foo", 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, "delegate with a context" );
+       equal( clicked, 2, "on with a context" );
 
        // Test unbinding with a different context
-       jQuery("#qunit-fixture").undelegate("#foo", "click");
+       jQuery("#qunit-fixture").off("click", "#foo");
        jQuery("#foo").trigger("click");
-       equal( clicked, 2, "undelegate with a context");
+       equal( clicked, 2, "off with a context");
 
        // Test binding with event data
-       jQuery("#body").delegate("#foo", "click", true, function(e){ equal( e.data, true, "delegate with event data" ); });
+       jQuery("#body").on("click", "#foo", true, function(e){ equal( e.data, true, "on with event data" ); });
        jQuery("#foo").trigger("click");
-       jQuery("#body").undelegate("#foo", "click");
+       jQuery("#body").off("click", "#foo");
 
        // Test binding with trigger data
-       jQuery("#body").delegate("#foo", "click", function(e, data){ equal( data, true, "delegate with trigger data" ); });
+       jQuery("#body").on("click", "#foo", function(e, data){ equal( data, true, "on with trigger data" ); });
        jQuery("#foo").trigger("click", true);
-       jQuery("#body").undelegate("#foo", "click");
+       jQuery("#body").off("click", "#foo");
 
        // Test binding with different this object
-       jQuery("#body").delegate("#foo", "click", jQuery.proxy(function(e){ equal( this["foo"], "bar", "delegate with event scope" ); }, { "foo": "bar" }));
+       jQuery("#body").on("click", "#foo", jQuery.proxy(function(e){ equal( this["foo"], "bar", "on with event scope" ); }, { "foo": "bar" }));
        jQuery("#foo").trigger("click");
-       jQuery("#body").undelegate("#foo", "click");
+       jQuery("#body").off("click", "#foo");
 
        // Test binding with different this object, event data, and trigger data
-       jQuery("#body").delegate("#foo", "click", true, jQuery.proxy(function(e, data){
-               equal( e.data, true, "delegate with with different this object, event data, and trigger data" );
-               equal( this.foo, "bar", "delegate with with different this object, event data, and trigger data" );
-               equal( data, true, "delegate with with different this object, event data, and trigger data");
+       jQuery("#body").on("click", "#foo", true, jQuery.proxy(function(e, data){
+               equal( e.data, true, "on with with different this object, event data, and trigger data" );
+               equal( this.foo, "bar", "on with with different this object, event data, and trigger data" );
+               equal( data, true, "on with with different this object, event data, and trigger data");
        }, { "foo": "bar" }));
        jQuery("#foo").trigger("click", true);
-       jQuery("#body").undelegate("#foo", "click");
+       jQuery("#body").off("click", "#foo");
 
        // Verify that return false prevents default action
-       jQuery("#body").delegate("#anchor2", "click", function(){ return false; });
+       jQuery("#body").on("click", "#anchor2", function(){ return false; });
        var hash = window.location.hash;
        jQuery("#anchor2").trigger("click");
        equal( window.location.hash, hash, "return false worked" );
-       jQuery("#body").undelegate("#anchor2", "click");
+       jQuery("#body").off("click", "#anchor2");
 
        // Verify that .preventDefault() prevents default action
-       jQuery("#body").delegate("#anchor2", "click", function(e){ e.preventDefault(); });
+       jQuery("#body").on("click", "#anchor2", function(e){ e.preventDefault(); });
        hash = window.location.hash;
        jQuery("#anchor2").trigger("click");
        equal( window.location.hash, hash, "e.preventDefault() worked" );
-       jQuery("#body").undelegate("#anchor2", "click");
+       jQuery("#body").off("click", "#anchor2");
 
        // Test binding the same handler to multiple points
        var called = 0;
        function callback(){ called++; return false; }
 
-       jQuery("#body").delegate("#nothiddendiv", "click", callback);
-       jQuery("#body").delegate("#anchor2", "click", callback);
+       jQuery("#body").on("click", "#nothiddendiv", callback);
+       jQuery("#body").on("click", "#anchor2", callback);
 
        jQuery("#nothiddendiv").trigger("click");
        equal( called, 1, "Verify that only one click occurred." );
@@ -1687,7 +1685,7 @@ test(".delegate()/.undelegate()", function() {
        equal( called, 1, "Verify that only one click occurred." );
 
        // Make sure that only one callback is removed
-       jQuery("#body").undelegate("#anchor2", "click", callback);
+       jQuery("#body").off("click", "#anchor2", callback);
 
        called = 0;
        jQuery("#nothiddendiv").trigger("click");
@@ -1699,10 +1697,10 @@ test(".delegate()/.undelegate()", function() {
 
        // Make sure that it still works if the selector is the same,
        // but the event type is different
-       jQuery("#body").delegate("#nothiddendiv", "foo", callback);
+       jQuery("#body").on("foo", "#nothiddendiv", callback);
 
        // Cleanup
-       jQuery("#body").undelegate("#nothiddendiv", "click", callback);
+       jQuery("#body").off("click", "#nothiddendiv", callback);
 
        called = 0;
        jQuery("#nothiddendiv").trigger("click");
@@ -1713,37 +1711,38 @@ test(".delegate()/.undelegate()", function() {
        equal( called, 1, "Verify that one foo occurred." );
 
        // Cleanup
-       jQuery("#body").undelegate("#nothiddendiv", "foo", callback);
+       jQuery("#body").off("foo", "#nothiddendiv", 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);
+       var livec = 0;
+       jQuery("#nothiddendivchild").html("<span></span>");
 
-       jQuery("#body").delegate("#nothiddendivchild", "click", function(e){ jQuery("#nothiddendivchild").html(""); });
-       jQuery("#body").delegate("#nothiddendivchild", "click", function(e){ if(e.target) {livec++;} });
+       jQuery("#body").on("click", "#nothiddendivchild", function(e){ jQuery("#nothiddendivchild").html(""); });
+       jQuery("#body").on("click", "#nothiddendivchild", function(e){ if(e.target) {livec++;} });
 
        jQuery("#nothiddendiv span").trigger("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("#body").undelegate("#nothiddendivchild", "click");
+       jQuery("#body").off("click", "#nothiddendivchild");
 
        // Verify that .live() occurs and cancel bubble in the same order as
-       // we would expect .bind() and .click() without delegation
+       // we would expect .on() and .click() without delegation
        var lived = 0, livee = 0;
 
        // bind one pair in one order
-       jQuery("#body").delegate("span#liveSpan1 a", "click", function(){ lived++; return false; });
-       jQuery("#body").delegate("span#liveSpan1", "click", function(){ livee++; });
+       jQuery("#body").on("click", "span#liveSpan1 a", function(){ lived++; return false; });
+       jQuery("#body").on("click", "span#liveSpan1", function(){ livee++; });
 
        jQuery("span#liveSpan1 a").trigger("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("#body").delegate("span#liveSpan2", "click", function(){ livee++; });
-       jQuery("#body").delegate("span#liveSpan2 a", "click", function(){ lived++; return false; });
+       jQuery("#body").on("click", "span#liveSpan2", function(){ livee++; });
+       jQuery("#body").on("click", "span#liveSpan2 a", function(){ lived++; return false; });
 
        lived = 0;
        livee = 0;
@@ -1752,28 +1751,28 @@ test(".delegate()/.undelegate()", function() {
        equal( livee, 0, "Verify that second handler doesn't." );
 
        // Cleanup
-       jQuery("#body").undelegate("click");
+       jQuery("#body").off("click", "**");
 
        // Test this, target and currentTarget are correct
-       jQuery("#body").delegate("span#liveSpan1", "click", function(e){
-               equal( this.id, "liveSpan1", "Check the this within a delegate handler" );
-               equal( e.currentTarget.id, "liveSpan1", "Check the event.currentTarget within a delegate handler" );
-               equal( e.delegateTarget, document.body, "Check the event.delegateTarget within a delegate handler" );
-               equal( e.target.nodeName.toUpperCase(), "A", "Check the event.target within a delegate handler" );
+       jQuery("#body").on("click", "span#liveSpan1", function(e){
+               equal( this.id, "liveSpan1", "Check the this within a on handler" );
+               equal( e.currentTarget.id, "liveSpan1", "Check the event.currentTarget within a on handler" );
+               equal( e.delegateTarget, document.body, "Check the event.delegateTarget within a on handler" );
+               equal( e.target.nodeName.toUpperCase(), "A", "Check the event.target within a on handler" );
        });
 
        jQuery("span#liveSpan1 a").trigger("click");
 
-       jQuery("#body").undelegate("span#liveSpan1", "click");
+       jQuery("#body").off("click", "span#liveSpan1");
 
        // Work with deep selectors
        livee = 0;
 
        function clickB(){ livee++; }
 
-       jQuery("#body").delegate("#nothiddendiv div", "click", function(){ livee++; });
-       jQuery("#body").delegate("#nothiddendiv div", "click", clickB);
-       jQuery("#body").delegate("#nothiddendiv div", "mouseover", function(){ livee++; });
+       jQuery("#body").on("click", "#nothiddendiv div", function(){ livee++; });
+       jQuery("#body").on("click", "#nothiddendiv div", clickB);
+       jQuery("#body").on("mouseover", "#nothiddendiv div", function(){ livee++; });
 
        equal( livee, 0, "No clicks, deep selector." );
 
@@ -1785,7 +1784,7 @@ test(".delegate()/.undelegate()", function() {
        jQuery("#nothiddendivchild").trigger("mouseover");
        equal( livee, 1, "Mouseover, deep selector." );
 
-       jQuery("#body").undelegate("#nothiddendiv div", "mouseover");
+       jQuery("#body").off("mouseover", "#nothiddendiv div");
 
        livee = 0;
        jQuery("#nothiddendivchild").trigger("click");
@@ -1795,13 +1794,13 @@ test(".delegate()/.undelegate()", function() {
        jQuery("#nothiddendivchild").trigger("mouseover");
        equal( livee, 0, "Mouseover, deep selector." );
 
-       jQuery("#body").undelegate("#nothiddendiv div", "click", clickB);
+       jQuery("#body").off("click", "#nothiddendiv div", clickB);
 
        livee = 0;
        jQuery("#nothiddendivchild").trigger("click");
        equal( livee, 1, "Click, deep selector." );
 
-       jQuery("#body").undelegate("#nothiddendiv div", "click");
+       jQuery("#body").off("click", "#nothiddendiv div");
 });
 
 test("jQuery.off using dispatched jQuery.Event", function() {
@@ -1893,16 +1892,16 @@ test("stopPropagation() stops directly-bound events on delegated target", functi
                .remove();
 });
 
-test("undelegate all bound events", function(){
+test("off all bound delegated events", function(){
        expect(2);
 
        var count = 0,
                clicks = 0,
                div = jQuery("#body");
 
-       div.delegate( "div#nothiddendivchild", "click submit", function(){ count++; } );
-       div.bind( "click", function(){ clicks++; } );
-       div.undelegate();
+       div.on( "click submit", "div#nothiddendivchild", function(){ count++; } );
+       div.on( "click", function(){ clicks++; } );
+       div.off( undefined, "**" );
 
        jQuery("div#nothiddendivchild").trigger("click");
        jQuery("div#nothiddendivchild").trigger("submit");
@@ -1911,32 +1910,32 @@ test("undelegate all bound events", function(){
 
        div.trigger("click");
        equal( clicks, 2, "Make sure delegated and directly bound event occurred." );
-       div.unbind("click");
+       div.off("click");
 });
 
-test("delegate with multiple events", function(){
+test("on with multiple delegated events", function(){
        expect(1);
 
        var count = 0;
        var div = jQuery("#body");
 
-       div.delegate("div#nothiddendivchild", "click submit", function(){ count++; });
+       div.on("click submit", "div#nothiddendivchild", function(){ count++; });
 
        jQuery("div#nothiddendivchild").trigger("click");
        jQuery("div#nothiddendivchild").trigger("submit");
 
        equal( count, 2, "Make sure both the click and submit were triggered." );
 
-       jQuery("#body").undelegate();
+       jQuery("#body").off( undefined, "**" );
 });
 
-test("delegate with change", function(){
+test("delegated on with change", function(){
        expect(8);
 
        var selectChange = 0, checkboxChange = 0;
 
        var select = jQuery("select[name='S1']");
-       jQuery("#body").delegate("select[name='S1']", "change", function() {
+       jQuery("#body").on("change", "select[name='S1']", function() {
                selectChange++;
        });
 
@@ -1944,7 +1943,7 @@ test("delegate with change", function(){
                checkboxFunction = function(){
                        checkboxChange++;
                };
-       jQuery("#body").delegate("#check2", "change", checkboxFunction);
+       jQuery("#body").on("change", "#check2", checkboxFunction);
 
        // test click on select
 
@@ -1966,7 +1965,7 @@ test("delegate with change", function(){
 
        // test blur/focus on text
        var text = jQuery("#name"), textChange = 0, oldTextVal = text.val();
-       jQuery("#body").delegate("#name", "change", function() {
+       jQuery("#body").on("change", "#name", function() {
                textChange++;
        });
 
@@ -1975,11 +1974,11 @@ test("delegate with change", function(){
        equal( textChange, 1, "Change on text input." );
 
        text.val(oldTextVal);
-       jQuery("#body").undelegate("#name", "change");
+       jQuery("#body").off("change", "#name");
 
        // test blur/focus on password
        var password = jQuery("#name"), passwordChange = 0, oldPasswordVal = password.val();
-       jQuery("#body").delegate("#name", "change", function() {
+       jQuery("#body").on("change", "#name", function() {
                passwordChange++;
        });
 
@@ -1988,13 +1987,13 @@ test("delegate with change", function(){
        equal( passwordChange, 1, "Change on password input." );
 
        password.val(oldPasswordVal);
-       jQuery("#body").undelegate("#name", "change");
+       jQuery("#body").off("change", "#name");
 
        // make sure die works
 
        // die all changes
        selectChange = 0;
-       jQuery("#body").undelegate("select[name='S1']", "change");
+       jQuery("#body").off("change", "select[name='S1']");
        select[0].selectedIndex = select[0].selectedIndex ? 0 : 1;
        select.trigger("change");
        equal( selectChange, 0, "Die on click works." );
@@ -2005,22 +2004,22 @@ test("delegate with change", function(){
        equal( selectChange, 0, "Die on keyup works." );
 
        // die specific checkbox
-       jQuery("#body").undelegate("#check2", "change", checkboxFunction);
+       jQuery("#body").off("change", "#check2", checkboxFunction);
        checkbox.trigger("change");
        equal( checkboxChange, 1, "Die on checkbox." );
 });
 
-test("delegate with submit", function() {
+test("delegated on with submit", function() {
        expect( 2 );
 
        var count1 = 0, count2 = 0;
 
-       jQuery("#body").delegate("#testForm", "submit", function(ev) {
+       jQuery("#body").on("submit", "#testForm", function(ev) {
                count1++;
                ev.preventDefault();
        });
 
-       jQuery(document).delegate("body", "submit", function(ev) {
+       jQuery(document).on("submit", "body", function(ev) {
                count2++;
                ev.preventDefault();
        });
@@ -2029,17 +2028,17 @@ test("delegate with submit", function() {
        equal( count1, 1, "Verify form submit." );
        equal( count2, 1, "Verify body submit." );
 
-       jQuery("#body").undelegate();
-       jQuery(document).undelegate();
+       jQuery("#body").off( undefined, "**" );
+       jQuery(document).off( undefined, "**" );
 });
 
-test("undelegate() with only namespaces", function() {
+test("delegated off() with only namespaces", function() {
        expect(2);
 
        var $delegate = jQuery("#liveHandlerOrder"),
                count = 0;
 
-       $delegate.delegate("a", "click.ns", function(e) {
+       $delegate.on("click.ns", "a", function(e) {
                count++;
        });
 
@@ -2047,11 +2046,11 @@ test("undelegate() with only namespaces", function() {
 
        equal( count, 1, "delegated click.ns");
 
-       $delegate.undelegate(".ns");
+       $delegate.off( ".ns", "**" );
 
        jQuery("a", $delegate).eq(1).trigger("click.ns");
 
-       equal( count, 1, "no more .ns after undelegate");
+       equal( count, 1, "no more .ns after off");
 });
 
 test("Non DOM element events", function() {
@@ -2059,7 +2058,7 @@ test("Non DOM element events", function() {
 
        var o = {};
 
-       jQuery(o).bind("nonelementobj", function(e) {
+       jQuery(o).on("nonelementobj", function(e) {
                ok( true, "Event on non-DOM object triggered" );
        });
 
@@ -2099,11 +2098,11 @@ test("focusin bubbles", function() {
        // focus the element so DOM focus won't fire
        input[0].focus();
 
-       jQuery( "body" ).bind( "focusin.focusinBubblesTest", function(){
+       jQuery( "body" ).on( "focusin.focusinBubblesTest", function(){
                equal( 1, order++, "focusin on the body second" );
        });
 
-       input.bind( "focusin.focusinBubblesTest", function(){
+       input.on( "focusin.focusinBubblesTest", function(){
                equal( 0, order++, "focusin on the element first" );
        });
 
@@ -2121,7 +2120,7 @@ test("focusin bubbles", function() {
        input.trigger( "focus" );
 
        input.remove();
-       jQuery( "body" ).unbind( "focusin.focusinBubblesTest" );
+       jQuery( "body" ).off( "focusin.focusinBubblesTest" );
 });
 
 test("custom events with colons (#3533, #8272)", function() {
@@ -2237,7 +2236,7 @@ test(".on and .off", function() {
        $onandoff.remove();
 });
 
-test("special bind/delegate name mapping", function() {
+test("special on name mapping", function() {
        expect( 7 );
 
        jQuery.event.special["slap"] = {
@@ -2462,11 +2461,11 @@ test("fixHooks extensions", function() {
                saved = jQuery.event.fixHooks.click;
 
        // Ensure the property doesn't exist
-       $fixture.bind( "click", function( event ) {
+       $fixture.on( "click", function( event ) {
                ok( !("blurrinessLevel" in event), "event.blurrinessLevel does not exist" );
        });
        fireNative( $fixture[0], "click" );
-       $fixture.unbind( "click" );
+       $fixture.off( "click" );
 
        jQuery.event.fixHooks.click = {
                filter: function( event, originalEvent ) {
@@ -2476,13 +2475,13 @@ test("fixHooks extensions", function() {
        };
 
        // Trigger a native click and ensure the property is set
-       $fixture.bind( "click", function( event ) {
+       $fixture.on( "click", function( event ) {
                equal( event.blurrinessLevel, 42, "event.blurrinessLevel was set" );
        });
        fireNative( $fixture[0], "click" );
 
        delete jQuery.event.fixHooks.click;
-       $fixture.unbind( "click" ).remove();
+       $fixture.off( "click" ).remove();
        jQuery.event.fixHooks.click = saved;
 });
 
@@ -2528,12 +2527,12 @@ if ( hasPHP ) {
        // Bind to the ready event in every possible way.
        jQuery(makeHandler("a"));
        jQuery(document).ready(makeHandler("b"));
-       jQuery(document).bind("ready.readytest", makeHandler("c"));
+       jQuery(document).on("ready.readytest", makeHandler("c"));
 
        // Do it twice, just to be sure.
        jQuery(makeHandler("d"));
        jQuery(document).ready(makeHandler("e"));
-       jQuery(document).bind("ready.readytest", makeHandler("f"));
+       jQuery(document).on("ready.readytest", makeHandler("f"));
 
        noEarlyExecution = order.length === 0;
 
@@ -2544,12 +2543,12 @@ if ( hasPHP ) {
                ok(noEarlyExecution, "Handlers bound to DOM ready should not execute before DOM ready");
 
                // Ensure execution order.
-               deepEqual(order, ["a", "b", "d", "e", "c", "f"], "Bound DOM ready handlers should execute in bind-order, but those bound with jQuery(document).bind( 'ready', fn ) will always execute last");
+               deepEqual(order, ["a", "b", "d", "e", "c", "f"], "Bound DOM ready handlers should execute in on-order, but those bound with jQuery(document).on( 'ready', fn ) will always execute last");
 
                // Ensure handler argument is correct.
                equal(args["a"], jQuery, "Argument passed to fn in jQuery( fn ) should be jQuery");
                equal(args["b"], jQuery, "Argument passed to fn in jQuery(document).ready( fn ) should be jQuery");
-               ok(args["c"] instanceof jQuery.Event, "Argument passed to fn in jQuery(document).bind( 'ready', fn ) should be an event object");
+               ok(args["c"] instanceof jQuery.Event, "Argument passed to fn in jQuery(document).on( 'ready', fn ) should be an event object");
 
                order = [];
 
@@ -2563,11 +2562,11 @@ if ( hasPHP ) {
                equal(order.pop(), "h", "Event handler should execute immediately");
                equal(args["h"], jQuery, "Argument passed to fn in jQuery(document).ready( fn ) should be jQuery");
 
-               jQuery(document).bind("ready.readytest", makeHandler("never"));
+               jQuery(document).on("ready.readytest", makeHandler("never"));
                equal(order.length, 0, "Event handler should never execute since DOM ready has already passed");
 
                // Cleanup.
-               jQuery(document).unbind("ready.readytest");
+               jQuery(document).off("ready.readytest");
        });
 
 })();
@@ -2587,8 +2586,8 @@ test("change handler should be detached from element", function() {
 
        jQuery.removeEvent = wrapperRemoveEvent ;
 
-       $fixture.bind( "change", function( event ) {});
-       $fixture.unbind( "change" );
+       $fixture.on( "change", function( event ) {});
+       $fixture.off( "change" );
 
        $fixture.remove();
 
index c3c83b4f5913d8899258916b3bf8af03188ceb66..c6505fa1867b6161203f3b446849cfe684afbfee 100644 (file)
@@ -172,8 +172,8 @@ var testWrap = function( val ) {
                ok( true, "Event triggered." );
 
                // Remove handlers on detached elements
-               result.unbind();
-               jQuery(this).unbind();
+               result.off();
+               jQuery(this).off();
        });
 
        j = jQuery("<span/>").wrap( result );
@@ -643,9 +643,9 @@ test( "append the same fragment with events (Bug #6997, 5566)", function() {
        if ( doExtra ) {
                element = jQuery("div:first").on( "click", function() {
                        ok( true, "Event exists on original after being unbound on clone" );
-                       jQuery( this ).unbind("click");
+                       jQuery( this ).off("click");
                });
-               clone = element.clone( true ).unbind("click");
+               clone = element.clone( true ).off("click");
                clone[ 0 ].fireEvent("onclick");
                element[ 0 ].fireEvent("onclick");
 
@@ -2021,7 +2021,7 @@ test( "Cloned, detached HTML5 elems (#10667,10670)", function() {
        }
 
        // Bind an event
-       $section.bind( "click", function( event ) {
+       $section.on( "click", function( event ) {
                ok( true, "clone fired event" );
        });
 
@@ -2030,7 +2030,7 @@ test( "Cloned, detached HTML5 elems (#10667,10670)", function() {
 
        // Trigger an event from the first clone
        $clone.trigger("click");
-       $clone.unbind("click");
+       $clone.off("click");
 
        // Add a child node with text to the original
        $section.append("<p>Hello</p>");
@@ -2042,7 +2042,7 @@ test( "Cloned, detached HTML5 elems (#10667,10670)", function() {
 
        // Trigger an event from the third clone
        $clone.trigger("click");
-       $clone.unbind("click");
+       $clone.off("click");
 
        // Add attributes to copy
        $section.attr({
@@ -2069,8 +2069,8 @@ test( "Cloned, detached HTML5 elems (#10667,10670)", function() {
        $section.trigger("click");
 
        // Unbind any remaining events
-       $section.unbind("click");
-       $clone.unbind("click");
+       $section.off("click");
+       $clone.off("click");
 });
 
 test( "Guard against exceptions when clearing safeChildNodes", function() {