Venkat Papana
Venkat Papana

Reputation: 4927

jQuery: how to trigger anchor link's click event

I have a anchor link like

<a id="myanchor" href="http://google.com" target="_blank">Google</a>

How to open href target in a new tab programatically?

Upvotes: 61

Views: 142668

Answers (7)

Abdul Kader
Abdul Kader

Reputation: 5842

You cannot open in a new tab programmatically, it's a browser functionality. You can open a link in an external window . Have a look here

Upvotes: -1

Vinod Poorma
Vinod Poorma

Reputation: 449

It worked for me:

     window.location = $('#myanchor').attr('href');

Upvotes: 1

arun vats
arun vats

Reputation: 21

$(":button").click(function () {                
                $("#anchor_google")[0].click();
            });
  1. First, find the button by type(using ":") if id is not given.
  2. Second,find the anchor tag by id or in some other tag like div and $("#anchor_google")[0] returns the DOM object.

Upvotes: 0

Jobelle
Jobelle

Reputation: 2834

 window.open($('#myanchor').attr('href'));

               $('#myanchor')[0].click();

Upvotes: 2

Igor G.
Igor G.

Reputation: 7009

Try the following:

$("#myanchor")[0].click()

As simple as that.

Upvotes: 123

Travis Kaufman
Travis Kaufman

Reputation: 2937

Even though this post is caput, I think it's an excellent demonstration of some walls that one can run into with jQuery, i.e. thinking click() actually clicks on an element, rather than just sending a click event bubbling up through the DOM. Let's say you actually need to simulate a click event (i.e. for testing purposes, etc.) If that's the case, provided that you're using a modern browser you can just use HTMLElement.prototype.click (see here for method details as well as a link to the W3 spec). This should work on almost all browsers, especially if you're dealing with links, and you can fall back to window.open pretty easily if you need to:

var clickLink = function(linkEl) {
  if (HTMLElement.prototype.click) {
    // You'll want to create a new element so you don't alter the page element's
    // attributes, unless of course the target attr is already _blank
    // or you don't need to alter anything
    var linkElCopy = $.extend(true, Object.create(linkEl), linkEl);
    $(linkElCopy).attr('target', '_blank');
    linkElCopy.click();
  } else {
    // As Daniel Doezema had said
    window.open($(linkEl).attr('href'));
  }
};

Upvotes: 20

GvS
GvS

Reputation: 52518

There's a difference in invoking the click event (does not do the redirect), and navigating to the href location.

Navigate:

 window.location = $('#myanchor').attr('href');

Open in new tab or window:

 window.open($('#myanchor').attr('href'));

invoke click event (call the javascript):

 $('#myanchor').click();

Upvotes: 26

Related Questions