smartkid
smartkid

Reputation: 1559

HTML anchor tag with Javascript onclick event

On using Google I found that they are using onclick events in anchor tags.

In more option in google header part, it looks like normal a tag, but onclicking it doesn't get redirected but opened a menu. Normally when using

<a href='more.php' onclick='show_more_menu()'>More >>></a>

It usually goes to 'more.php' without firing show_more_menu(), but I have show a menu in that page itself. How to do like google?

Upvotes: 120

Views: 759489

Answers (7)

Gianmarco
Gianmarco

Reputation: 842

Not sure if this is what you are looking for but you can recreate an anchor tag with a div adding role="link", this doesn't have the href but at the same time it should be fine from a SEO point of view

<div tabindex="0" role="link" aria-label="Example Link" onclick="show_more_menu()">
  Click to navigate
</div>

Upvotes: 1

Aditya Manohar
Aditya Manohar

Reputation: 2274

From what I understand you do not want to redirect when the link is clicked.

You can do:

<a href='javascript:;' onclick='show_more_menu();'>More ></a>

Upvotes: 64

Nandha
Nandha

Reputation: 335

One more solution that prevents default action even if the javascript function returns any value.

<a href="www.any-website.com" onclick='functionToRun();return false;'>

Upvotes: 2

Sandeep Jain
Sandeep Jain

Reputation: 1259

1) Link to work
<a href="#" onClick={this.setActiveTab}>
      ...View Full List
                    </a>
  setActiveTab = (e) => {
    e.preventDefault();
    console.log(e.target);
}

Upvotes: 0

Kamil Kiełczewski
Kamil Kiełczewski

Reputation: 92687

Use following code to show menu instead go to href addres

function show_more_menu(e) {
  if( !confirm(`Go to ${e.target.href} ?`) ) e.preventDefault();
}
<a href='more.php' onclick="show_more_menu(event)"> More >>> </a>

Upvotes: 9

TJHeuvel
TJHeuvel

Reputation: 12618

If your onclick function returns false the default browser behaviour is cancelled. As such:

<a href='http://www.google.com' onclick='return check()'>check</a>

<script type='text/javascript'>

function check()
{
    return false;
}

</script>

Either way, whether google does it or not isn't of much importance. It's cleaner to bind your onclick functions within javascript - this way you separate your HTML from other code.

Upvotes: 166

sun2
sun2

Reputation: 1158

You can even try below option:

<a href="javascript:show_more_menu();">More >>></a>

Upvotes: 66

Related Questions