How to prevent href=”#” link from changing the URL hash with JavaScript?

Sometimes, we want to prevent href=”#” link from changing the URL hash with JavaScript.

In this article, we’ll look at how to prevent href=”#” link from changing the URL hash with JavaScript.

How to prevent href=”#” link from changing the URL hash with JavaScript?

To prevent href=”#” link from changing the URL hash with JavaScript, we call preventDefault.

For instance, we write

<a href="/foo/bar" class="link">Foo: Bar</a>

to add a link.

Then we write

addEventListener("click", (ev) => {
  if (ev.target.classList.contains("link")) {
    ev.preventDefault();
    //...
  }
});

to add a click listener to window with addEventListener.

In the event listener, we check if the element being clicked on has class link with classList.contains.

If it’s true, then we call preventDefault to stop the default navigation behavior.

Conclusion

To prevent href=”#” link from changing the URL hash with JavaScript, we call preventDefault.