Bug Tracker

Ticket #3355: stopImmediatePropagation[5843].diff

File stopImmediatePropagation[5843].diff, 1.6 KB (added by flesler, 7 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