In the project I work on I’ve recently moved from developing backend (i.e. non-web) servers to web-related things. In the HTML code I’ve found the following thing all over the place:
<a href='#'>some link</a>
Then some JS is attached to the click event of <a> element.
Does this sole hash has any special meaning? I understand how the href='#some_id' tells the browser to scroll to element with ID = some_id. But href='#' doesn’t work that way, right?
If it’s all about creating a clickable piece of text, why not simply use a <span>?
Exactly. What you see here is somehow bad design (although it is quite common to use
href="#").What it actually will do is jumping to the top of the page if the default action is not prevented.
Much better would be to
<button>and style it accordingly (maybe even only inserted via JavaScript)It also depends on whether the site is meant to run with disabled JavaScript. If yes, then such a link (but also a button) will not work.
But in any case, from a semantic point of view, using a link solely to have something “clickable” is wrong.