<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Harsh vardhan Prasad</title>
    <description>The latest articles on DEV Community by Harsh vardhan Prasad (@harsh0204).</description>
    <link>https://dev.to/harsh0204</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4073846%2Fdfb50692-e64d-46af-9663-4d090bdfec38.png</url>
      <title>DEV Community: Harsh vardhan Prasad</title>
      <link>https://dev.to/harsh0204</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/harsh0204"/>
    <language>en</language>
    <item>
      <title>e.preventDefault() vs e.stopPropagation()</title>
      <dc:creator>Harsh vardhan Prasad</dc:creator>
      <pubDate>Wed, 12 Aug 2026 00:04:42 +0000</pubDate>
      <link>https://dev.to/harsh0204/epreventdefault-vs-estoppropagation-1llh</link>
      <guid>https://dev.to/harsh0204/epreventdefault-vs-estoppropagation-1llh</guid>
      <description>&lt;p&gt;The easiest way to remember it:&lt;br&gt;
preventDefault() → stops the browser's default action.&lt;br&gt;
stopPropagation() → stops the event from moving through the DOM.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;event.preventDefault()
It prevents the browser's built-in behavior associated with an event.
Example: clicking a link.
&lt;a href="https://google.com" id="link" rel="noopener noreferrer"&gt;Google&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;document.getElementById("link").addEventListener("click", (event) =&amp;gt; {&lt;br&gt;
    event.preventDefault();&lt;br&gt;
});&lt;/p&gt;

&lt;p&gt;Normally:&lt;br&gt;
Click &lt;a&gt;&lt;br&gt;
   ↓&lt;br&gt;
Browser navigates to Google&lt;br&gt;
With preventDefault():&lt;br&gt;
Click &lt;/a&gt;&lt;a&gt;&lt;br&gt;
   ↓&lt;br&gt;
preventDefault()&lt;br&gt;
   ↓&lt;br&gt;
❌ Browser does NOT navigate&lt;br&gt;
Common uses:&lt;br&gt;
// Form submission&lt;br&gt;
event.preventDefault();&lt;/a&gt;&lt;/p&gt;
&lt;a&gt;

&lt;p&gt;// Link navigation&lt;br&gt;
event.preventDefault();&lt;/p&gt;

&lt;p&gt;// Drag/drop browser behavior&lt;br&gt;
event.preventDefault();&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;event.stopPropagation()
This prevents the event from bubbling up or capturing down through parent/child elements.
Example:

Click me

parent.addEventListener("click", () =&amp;gt; {
console.log("Parent clicked");
});&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;child.addEventListener("click", (event) =&amp;gt; {&lt;br&gt;
    event.stopPropagation();&lt;br&gt;
    console.log("Button clicked");&lt;br&gt;
});&lt;br&gt;
Without stopPropagation():&lt;br&gt;
Click Button&lt;br&gt;
    ↓&lt;br&gt;
Button handler&lt;br&gt;
    ↓&lt;br&gt;
Parent handler&lt;br&gt;
Output:&lt;br&gt;
Button clicked&lt;br&gt;
Parent clicked&lt;br&gt;
With stopPropagation():&lt;br&gt;
Click Button&lt;br&gt;
    ↓&lt;br&gt;
Button handler&lt;br&gt;
    ↓&lt;br&gt;
stopPropagation()&lt;br&gt;
    ↓&lt;br&gt;
❌ Parent handler doesn't receive the event&lt;br&gt;
The important difference&lt;br&gt;
Imagine:&lt;/p&gt;

&lt;/a&gt;&lt;a&gt;&lt;br&gt;
    &lt;/a&gt;&lt;a href="/profile"&gt;&lt;br&gt;
        Like&lt;br&gt;
    &lt;/a&gt;

&lt;p&gt;If you click the button:&lt;br&gt;
preventDefault()&lt;br&gt;
button.addEventListener("click", (event) =&amp;gt; {&lt;br&gt;
    event.preventDefault();&lt;br&gt;
});&lt;br&gt;
The event can still propagate:&lt;br&gt;
Button&lt;br&gt;
  ↓&lt;br&gt;
Anchor&lt;br&gt;
  ↓&lt;br&gt;
Card&lt;br&gt;
But the browser's default action (such as following the link) is prevented.&lt;br&gt;
stopPropagation()&lt;br&gt;
button.addEventListener("click", (event) =&amp;gt; {&lt;br&gt;
    event.stopPropagation();&lt;br&gt;
});&lt;br&gt;
The event doesn't continue through the DOM:&lt;br&gt;
Button&lt;br&gt;
  ↓&lt;br&gt;
❌ Anchor/Card handlers&lt;br&gt;
But the browser's default behavior is not automatically cancelled.&lt;br&gt;
Can you use both?&lt;br&gt;
Yes.&lt;br&gt;
button.addEventListener("click", (event) =&amp;gt; {&lt;br&gt;
    event.preventDefault();&lt;br&gt;
    event.stopPropagation();&lt;br&gt;
});&lt;br&gt;
Now you're saying:&lt;br&gt;
Don't perform the browser's default action.&lt;br&gt;
Don't let this event reach other elements.&lt;/p&gt;

</description>
      <category>react</category>
      <category>javascript</category>
    </item>
  </channel>
</rss>
