mirror of
https://github.com/jquery/jquery.git
synced 2024-11-23 02:54:22 +00:00
jquery event: fixes #4989. blur and focus events now bubble and can be handled using live().
This commit is contained in:
parent
f3474c00cd
commit
bca8225413
35
src/event.js
35
src/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);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user