In JavaScript event handlers, you'll frequently see return false; at the end. Why? What does it do? The answer is: It depends. Before we get into the details, there are basically two things it could be doing:
- Preventing the default action of the event, such as when you click a link and the browser follows it.
- Stopping propagation of the event to ancestor elements.
So which does return false do? Just one, neither, or both:
- DOM0 handlers: In an old-style DOM0 handler, hooked up via an attribute like this:
...it prevents the default action but doesn't stop propagation. Note that you need that<div onclick="return functionName();">returnin the attribute. Try it here. - DOM0 handlers (again): The same is true of an old-style DOM0 handler hooked up via the reflected property for the attribute, like this:
Try it here. As before,document.getElementById("someId").onclick = functionName;return false;prevents the default action but doesn't stop propagation. - DOM2 handlers: In a proper DOM2 handler hooked up via
addEventListener, like this:
...document.getElementById("someId").addEventListener("click", functionName, false);return falsedoes absolutely nothing. Instead, use thepreventDefaultandstopPropagationfunctions on theEventobject your handler receives as an argument. Try it here (be sure to use a non-Microsoft browser, or use IE9 or higher). - Microsoft DOM2-ish handlers: In a DOM2-ish handler hooked up with Microsoft's
attachEventfunction, like this:
...document.getElementById("someId").attachEvent("onclick", functionName);return falseprevents the default but not propagation, just like a DOM0 handler. Try it here (using IE8 or lower). - jQuery handlers: Event handlers hooked up with jQuery get a twofer:
return falseboth prevents the default and stops propagation. It's a jQuery thing.
Happy handling!
5 comments:
Essential information here. We switched from a jquery-heavy website to an angular website (I hesitate to call it an app proper) and this got me, but I remembered this post and it saved me a lot of time.
useful and quite right
Thanks for sharing this information. So cool! Concrete company Apex NC
This article does an excellent job of explaining why return false in JavaScript event handlers can be misleading. The comparison between DOM0, DOM2, Microsoft-specific handlers, and jQuery clearly shows that its behavior depends on how the event handler is registered. The examples also highlight an important distinction between preventing a default browser action and stopping event propagation.
The explanation is especially useful for developers maintaining or modernizing JavaScript applications, because relying on return false without understanding the event model can produce unexpected behavior. Knowing when to use preventDefault() and stopPropagation() is an important part of a practical Javascript Course in India, particularly when working with browser events and interactive interfaces.
The article's historical comparison also provides useful context for understanding older event-handling approaches alongside addEventListener and jQuery. This makes it easier to recognize legacy code and reason about how event behavior changes between APIs. Developers can build on these concepts through Javascript Training in India when learning cleaner and more predictable event-handling techniques.
Post a Comment