Skip to content
Permalink
Browse files

jquery event: fixes #4989. blur and focus events now bubble and can b…

…e handled using live().
  • Loading branch information
flesler committed Sep 14, 2009
1 parent f3474c0 commit bca82254137a161094377b2d8189c2d9d5906a0f
Showing with 63 additions and 2 deletions.
  1. +33 −2 src/event.js
  2. +30 −0 test/unit/event.js
@@ -518,9 +518,10 @@ var withinElement = function( event ) {
}
};

// Create mouseenter and mouseleave events
jQuery.each({
mouseover: 'mouseenter',
mouseout: 'mouseleave'
mouseover: "mouseenter",
mouseout: "mouseleave"
}, function( orig, fix ) {
jQuery.event.special[ fix ] = {
setup: function(){
@@ -532,6 +533,36 @@ jQuery.each({
};
});

// Create "bubbling" focus and blur events
jQuery.each({
focus: "focusin",
blur: "focusout"
}, function( orig, fix ){
var event = jQuery.event,
special = event.special,
handle = event.handle;

function ieHandler() {
arguments[0].type = orig;
return handle.apply(this, arguments);
}

special[orig] = {
setup:function() {
if ( this.addEventListener )
this.addEventListener( orig, handle, true );
else
jQuery.event.add( this, fix, ieHandler );
},
teardown:function() {
if ( this.removeEventListener )
this.removeEventListener( orig, handle, true );
else
jQuery.event.remove( this, fix, ieHandler );
}
};
});

jQuery.fn.extend({
bind: function( type, data, fn, thisObject ) {
if ( jQuery.isFunction( data ) ) {
@@ -745,6 +745,36 @@ test(".live()/.die()", function() {
jQuery('span#liveSpan1').die('click');
});

test("live with focus/blur", function(){
expect(2);

// Setup
jQuery("<input type='text' id='livefb' />").appendTo("body");

var $child = jQuery("#livefb"),
child = $child[0],
counter = 0;

function count(){
counter++;
}

// Test
$child.live("focus", count);
$child.live("blur", count);

child.focus();
equals(counter, 1, "Test live() with focus event");

child.blur();
equals(counter, 2, "Test live() with blur event");

// Teardown
$child.die("focus", count);
$child.die("blur", count);
$child.remove();
});

test("Non DOM element events", function() {
expect(3);

0 comments on commit bca8225

Please sign in to comment.
You can’t perform that action at this time.