aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/event.js8
-rw-r--r--test/unit/event.js39
2 files changed, 47 insertions, 0 deletions
diff --git a/src/event.js b/src/event.js
index 264ac5b1b..e667ddbdc 100644
--- a/src/event.js
+++ b/src/event.js
@@ -944,6 +944,14 @@ jQuery.each(["live", "die"], function( i, name ) {
var type, i = 0, match, namespaces, preType,
selector = origSelector || this.selector,
context = origSelector ? this : jQuery( this.context );
+
+ if ( typeof types === "object" && !types.preventDefault ) {
+ for ( var key in types ) {
+ context[ name ]( key, data, types[key], selector );
+ }
+
+ return this;
+ }
if ( jQuery.isFunction( data ) ) {
fn = data;
diff --git a/test/unit/event.js b/test/unit/event.js
index 9e1ac8922..a133a104c 100644
--- a/test/unit/event.js
+++ b/test/unit/event.js
@@ -206,6 +206,45 @@ test("bind/one/unbind(Object)", function(){
equals( mouseoverCounter, 4, "bind(Object)" );
});
+test("live/die(Object), delegate/undelegate(String, Object)", function() {
+ expect(6);
+
+ var clickCounter = 0, mouseoverCounter = 0,
+ $p = jQuery("#firstp"), $a = $p.find("a");
+
+ var events = {
+ click: function( event ) {
+ clickCounter += ( event.data || 1 );
+ },
+ mouseover: function( event ) {
+ mouseoverCounter += ( event.data || 1 );
+ }
+ };
+
+ function trigger() {
+ $a.trigger("click").trigger("mouseover");
+ }
+
+ $a.live( events );
+ $p.delegate( "a", events, 2 );
+
+ trigger();
+ equals( clickCounter, 3, "live/delegate(Object)" );
+ equals( mouseoverCounter, 3, "live/delegate(Object)" );
+
+ $p.undelegate( "a", events );
+
+ trigger();
+ equals( clickCounter, 4, "undelegate(Object)" );
+ equals( mouseoverCounter, 4, "undelegate(Object)" );
+
+ $a.die( events );
+
+ trigger();
+ equals( clickCounter, 4, "die(Object)" );
+ equals( mouseoverCounter, 4, "die(Object)" );
+});
+
test("bind(), iframes", function() {
// events don't work with iframes, see #939 - this test fails in IE because of contentDocument
var doc = jQuery("#loadediframe").contents();