X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=src%2Fevent.js;h=b4650ae5a3dd6103007c5e3ba0c38a8c9eb232ce;hb=98c7248518f9a2082ccf50240b5ab44bf98d7b5e;hp=53ef72c0c17d2a3733a446152a5a5c87558c5202;hpb=e9092e995424828c455952e09b9ec83577009796;p=jquery.git diff --git a/src/event.js b/src/event.js index 53ef72c..b4650ae 100644 --- a/src/event.js +++ b/src/event.js @@ -221,11 +221,7 @@ jQuery.event = { if ( !ret ) { if ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) { - if ( elem.removeEventListener ) { - elem.removeEventListener( type, elemData.handle, false ); - } else if ( elem.detachEvent ) { - elem.detachEvent( "on" + type, elemData.handle ); - } + removeEvent( elem, type, elemData.handle ); } ret = null; @@ -333,9 +329,12 @@ jQuery.event = { } else if ( !event.isDefaultPrevented() ) { var target = event.target, old, - isClick = jQuery.nodeName(target, "a") && type === "click"; + isClick = jQuery.nodeName(target, "a") && type === "click", + special = jQuery.event.special[ type ] || {}; + + if ( (!special._default || special._default.call( elem, event ) === false) && + !isClick && !(target && target.nodeName && jQuery.noData[target.nodeName.toLowerCase()]) ) { - if ( !isClick && !(target && target.nodeName && jQuery.noData[target.nodeName.toLowerCase()]) ) { try { if ( target[ type ] ) { // Make sure that we don't accidentally re-trigger the onFOO events @@ -526,6 +525,14 @@ jQuery.event = { } }; +var removeEvent = document.removeEventListener ? + function( elem, type, handle ) { + elem.removeEventListener( type, handle, false ); + } : + function( elem, type, handle ) { + elem.detachEvent( "on" + type, handle ); + }; + jQuery.Event = function( src ) { // Allow instantiation without the 'new' keyword if ( !this.preventDefault ) {