gotchajavascriptCritical
What's the difference between event.stopPropagation and event.preventDefault?
Viewed 0 times
eventandbetweenthedifferencestoppropagationwhatpreventdefault
Problem
They seem to be doing the same thing...
Is one modern and one old? Or are they supported by different browsers?
When I handle events myself (without framework) I just always check for both and execute both if present. (I also
So why both? Should I keep checking for both? Or is there actually a difference?
(I know, a lot of questions, but they're all sort of the same =))
Is one modern and one old? Or are they supported by different browsers?
When I handle events myself (without framework) I just always check for both and execute both if present. (I also
return false, but I have the feeling that doesn't work with events attached with node.addEventListener).So why both? Should I keep checking for both? Or is there actually a difference?
(I know, a lot of questions, but they're all sort of the same =))
Solution
stopPropagation prevents further propagation of the current event in the capturing and bubbling phases.preventDefault prevents the default action the browser makes on that event.Examples
preventDefault
$("#but").click(function (event) {
event.preventDefault()
})
$("#foo").click(function () {
alert("parent click event fired!")
})
button
stopPropagation
$("#but").click(function (event) {
event.stopPropagation()
})
$("#foo").click(function () {
alert("parent click event fired!")
})
button
With
stopPropagation, only the button's click handler is called while the div's click handler never fires.Where as if you use
preventDefault, only the browser's default action is stopped but the div's click handler still fires.Below are some docs on the DOM event properties and methods from MDN:
event.cancelBubble
event.preventDefault()
event.returnValue
event.stopPropagation()
For IE9 and FF you can just use preventDefault & stopPropagation.
To support IE8 and lower replace
stopPropagation with cancelBubble and replace preventDefault with returnValueContext
Stack Overflow Q#5963669, score: 1350
Revisions (0)
No revisions yet.