Alternatives for using "#" in href attribute
The best solution is to not use some dummy placeholder at all. Use a meaningful URL which, if the link were actually followed, would show you the information you'd get from the AJAX request.
I do this regularly with my web apps, using Javascript to enhance a working site. For example, the HTML:
<a href="/users/index" rel="popup">View users</a>
The Javascript (jQuery):
$('a[rel*="popup"]').click(function() {
loadPopup({ // whatever your favourite lightbox is, etc..
url: this.href
});
return false;
});
The benefits of this are numerous. Your site is accessible to screen readers, web crawlers and users with javascript off, and even those with javascript turned on will get a meaningful URL in their status bar, so they'll know where they're going.
If your onclick
handler returns false
, the link won't get followed by the browser. Try this:
<a href="#" onclick="alert('No # in the address bar!'); return false;">Click Me</a>
EDIT:
If you're absolutely hellbent on not using the octothorpe (ie. #
symbol), you don't have to. Try this:
<a href="" onclick="alert('No change in the address bar!'); return false;">Click Me</a>
I usually use this:
href="javascript:void(0);"
Setting an anchor's href
attribute to javascript:void(0);
indicates to the browser that this anchor is not a hyperlink to another document or anchor,