Real Noob
Real Noob

Reputation: 1593

Unable to open link with jQuery click()

I want to open some relevant links after a button click by user. All these links have to open in a new tab.

I tried using the following code but it does not open the links:

$("div.relevant-links").on('click', function() {

  var count = 0;
  var relevant_links = $(this);

  function open_link() {
    if (count < relevant_links.siblings("a.sections").length) {
      relevant_links.siblings("a.sections").eq(count).css({
        background: 'yellowgreen'
      });
      relevant_links.siblings("a.sections").eq(count).click();
      count++;
    } else {
      clearInterval(link_interval);
    }
  }

  open_link();

  var link_interval = setInterval(open_link, 5000);

});

All other code works fine because I can see the background color of the link change. However, the click() method does not seem to work.

How can I trigger the click on different links? All the links have to open in a new tab. I have set their target attributes to _blank.

Upvotes: 0

Views: 236

Answers (1)

Roger K
Roger K

Reputation: 101

First of all, remove the interval, if you're going recursive, use setTimeout, if there's even a minor flaw in your code you've got yourself an annoying memory leak.

Second, when you want to open a webpage, new tab or not. You'll need to do it right after a user initiated action like a click. If you're gonna trigger it again after 5 seconds it will get blocked in modern browsers.

Third, you could also retrieve the href of the links and perform a window.open('your href here', '_blank') instead of triggering the click event.

Last, don't open a bunch of "relevant" links. You're not making anyone happy with that. Especially not a new one every 5 seconds!

Upvotes: 1

Related Questions