Added support for map of events in live, die, delegate and undelegate. Fixes #6282.
This commit is contained in:
parent
97b42492bb
commit
da5706c974
2 changed files with 47 additions and 0 deletions
|
@ -944,6 +944,14 @@ jQuery.each(["live", "die"], function( i, name ) {
|
||||||
var type, i = 0, match, namespaces, preType,
|
var type, i = 0, match, namespaces, preType,
|
||||||
selector = origSelector || this.selector,
|
selector = origSelector || this.selector,
|
||||||
context = origSelector ? this : jQuery( this.context );
|
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 ) ) {
|
if ( jQuery.isFunction( data ) ) {
|
||||||
fn = data;
|
fn = data;
|
||||||
|
|
|
@ -206,6 +206,45 @@ test("bind/one/unbind(Object)", function(){
|
||||||
equals( mouseoverCounter, 4, "bind(Object)" );
|
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() {
|
test("bind(), iframes", function() {
|
||||||
// events don't work with iframes, see #939 - this test fails in IE because of contentDocument
|
// events don't work with iframes, see #939 - this test fails in IE because of contentDocument
|
||||||
var doc = jQuery("#loadediframe").contents();
|
var doc = jQuery("#loadediframe").contents();
|
||||||
|
|
Loading…
Reference in a new issue