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,
|
||||
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;
|
||||
|
|
|
@ -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();
|
||||
|
|
Loading…
Reference in a new issue