Bug Tracker

Ticket #3355: stopImmediatePropagation[5843].diff

File stopImmediatePropagation[5843].diff, 1.6 KB (added by flesler, 6 years ago)

Uses the expando to modify the event objects, doesn't break old code.

  • src/event.js

     
    190190                                        target: elem, 
    191191                                        preventDefault: function(){}, 
    192192                                        stopPropagation: function(){}, 
     193                                        stopImmediatePropagation:stopImmediatePropagation, 
    193194                                        timeStamp: now() 
    194195                                }); 
    195196                                data[0][expando] = true; // no need to fix fake event 
     
    271272                                        event.preventDefault(); 
    272273                                        event.stopPropagation(); 
    273274                                } 
     275 
     276                                if( event[expando] == -1 ){ 
     277                                        event[expando] = true; 
     278                                        break; 
     279                                } 
     280 
     281                                 
    274282                        } 
    275283                } 
    276284 
     
    280288        props: "altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target timeStamp toElement type view wheelDelta which".split(" "), 
    281289 
    282290        fix: function(event) { 
    283                 if ( event[expando] == true ) 
     291                if ( event[expando] ) 
    284292                        return event; 
    285293 
    286294                // store a copy of the original event object 
     
    313321                        originalEvent.cancelBubble = true; 
    314322                }; 
    315323 
     324                event.stopImmediatePropagation = stopImmediatePropagation; 
     325 
    316326                // Fix timeStamp 
    317327                event.timeStamp = event.timeStamp || now(); 
    318328 
     
    367377        } 
    368378}; 
    369379 
     380function stopImmediatePropagation(){ 
     381        this[expando] = -1; 
     382        this.stopPropagation(); 
     383} 
     384 
    370385if ( !jQuery.browser.msie ){     
    371386        // Checks if an event happened on an element within another element 
    372387        // Used in jQuery.event.special.mouseenter and mouseleave handlers