X-Git-Url: http://git.asbjorn.it/?a=blobdiff_plain;f=src%2Fevent.js;h=b4650ae5a3dd6103007c5e3ba0c38a8c9eb232ce;hb=b8076a914ba9d400dc9c48d866b145df6fabafcf;hp=2978bc6a58edd0ff653c0970be57c2fe0b6270b2;hpb=eed69eccc54d010889b5d8495320538d7ceb4e51;p=jquery.git diff --git a/src/event.js b/src/event.js index 2978bc6..b4650ae 100644 --- a/src/event.js +++ b/src/event.js @@ -187,6 +187,9 @@ jQuery.event = { namespace = new RegExp("(^|\\.)" + jQuery.map( namespaces.slice(0).sort(), fcleanup ).join("\\.(?:.*\\.)?") + "(\\.|$)") + + } else { + namespaces = []; } var special = this.special[ type ] || {}; @@ -208,21 +211,17 @@ jQuery.event = { } if ( special.remove ) { - special.remove.call( elem, namespaces || [], fn); + special.remove.call( elem, namespaces, fn); } // remove generic event handler if no more handlers exist for ( ret in events[ type ] ) { - break; } + 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; @@ -330,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 @@ -523,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 ) {