aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDave Methvin <dave.methvin@gmail.com>2011-10-10 23:14:08 -0400
committerDave Methvin <dave.methvin@gmail.com>2011-10-10 23:14:08 -0400
commit511c9fe763bac171bb6ac3ac0a77c425da8b3112 (patch)
treec7ee66bbcc469e3bd97754ff65d43b01882a66b2
parent307b1a3d77ba74388b38e8c9bb9b506bf1b21245 (diff)
downloadjquery-511c9fe763bac171bb6ac3ac0a77c425da8b3112.tar.gz
jquery-511c9fe763bac171bb6ac3ac0a77c425da8b3112.zip
Fix focus/blur unit test issues. Reopens #6705.
In the event refactor, I tried to have the focus/blur events trigger the focus/blur plus focusin/focusout events but this doesn't handle various real-world cases that expect a trigger()ed jQuery handler to run and be able to pass data even if the native event shouldn't fire. This reopens a bug that causes a double-fire of inline event handlers.
-rw-r--r--src/event.js17
1 files changed, 4 insertions, 13 deletions
diff --git a/src/event.js b/src/event.js
index 0160be07f..875f014d7 100644
--- a/src/event.js
+++ b/src/event.js
@@ -27,14 +27,6 @@ var rnamespaces = /\.(.*)$/,
(!m[3] || m[3].test( elem.className )) &&
(!m[4] || elem.getAttribute( m[4] ) == m[5])
);
- },
- useNativeMethod = function( event ) {
- // IE throws error on focus/blur of a hidden element (#1486)
- var type = event.type;
- if ( !event.isDefaultPrevented() && this[ type ] && ((type !== "focus" && type !== "blur") || event.target.offsetWidth !== 0) ) {
- this[ type ]();
- return false;
- }
};
/*
@@ -102,7 +94,6 @@ jQuery.event = {
special = jQuery.event.special[ type ] || {};
// handleObj is passed to all event handlers
- // will be the result of merging handleObjIn
handleObj = jQuery.extend({
type: type,
origType: tns[1],
@@ -357,7 +348,7 @@ jQuery.event = {
eventPath = [];
addHandlers( elem, special.bindType || type );
doc = elem.ownerDocument;
- if ( doc && !jQuery.isWindow( elem ) & !event.isPropagationStopped() ) {
+ if ( doc && !special.noBubble && !jQuery.isWindow( elem ) & !event.isPropagationStopped() ) {
bubbleType = special.delegateType || type;
for ( cur = elem.parentNode; cur; cur = cur.parentNode ) {
addHandlers( cur, bubbleType );
@@ -426,7 +417,7 @@ jQuery.event = {
// Determine handlers that should run if there are delegated events
// Avoid disabled elements in IE (#6911) and non-left-click bubbling in Firefox (#3861)
- if ( delegateCount && !event.target.disabled && !(event.button && event.type === "click") ) {
+ if ( delegateCount && !event.target.disabled && !(event.button && event.type === "click") ) {
for ( cur = event.target; cur != this; cur = cur.parentNode || this ) {
selMatch = {};
@@ -566,11 +557,11 @@ jQuery.event = {
focus: {
delegateType: "focusin",
- trigger: useNativeMethod
+ noBubble: true
},
blur: {
delegateType: "focusout",
- trigger: useNativeMethod
+ noBubble: true
},
beforeunload: {