Jquery如何在href元素上触发click事件

时间:2011-11-03 18:06:56

标签: jquery events triggers hyperlink click

我正在尝试使用jquery触发超链接上的click事件,如下所示。超链接没有任何ID但它确实有cssclass

 $(document).ready(function () {  $('.cssbuttongo').trigger('click'); }); 

上述功能无效。这是超链接

<a href="hyperlinkurl" class="cssbuttongo">hyperlink anchor</a>

感谢您的回答。

6 个答案:

答案 0 :(得分:183)

原生DOM方法做得对:

$('.cssbuttongo')[0].click();
                  ^
              Important!

无论href是网址,片段(例如#blah)还是javascript:,都可以使用。

请注意,这会调用DOM click方法而不是jQuery click方法(这是非常不完整的,完全忽略href)。

答案 1 :(得分:64)

我没有事实证据来证明这一点,但我已经遇到过这个问题。似乎触发<a>标记上的click()事件似乎与您所期望的输入按钮的行为方式相同。

我使用的解决方法是在窗口上设置location.href属性,这会导致浏览器加载请求资源,如下所示:

$(document).ready(function()
{
      var href = $('.cssbuttongo').attr('href');
      window.location.href = href; //causes the browser to refresh and load the requested url
   });
});

编辑:

我会制作一个js小提琴,但问题的本质与jsfiddle如何使用iframe呈现代码混合在一起使得它变得不合适。

答案 2 :(得分:28)

除了romkyns的great answer之外......这里有一些相关的文档/示例。


DOM Elements have a native .click() method

  

HTMLElement.click()方法模拟鼠标单击元素。

     

当使用click时,它还会触发元素的click事件,该事件将冒泡到文档树(或事件链)上方的元素并触发其单击事件。 但是,点击事件的冒泡不会导致<a>元素启动导航,就像收到真正的鼠标点击一样。 (mdn reference)

相关W3 documentation


一些例子..

  • 您可以从jQuery对象访问特定的DOM元素:(example)

    $('a')[0].click();
    
  • 您可以使用.get()方法从jQuery对象中检索DOM元素:(example)

    $('a').get(0).click();
    
  • 正如所料,您可以选择DOM元素并调用.click()方法。 (example)

    document.querySelector('a').click();
    

值得指出的是,触发本地.click()事件需要

答案 3 :(得分:4)

通过JavaScript触发点击不会打开超链接。这是内置于浏览器中的安全措施。

但请参阅this question了解一些变通方法。

答案 4 :(得分:3)

只是想让你们知道,接受的答案并不总是有效。

这是一个失败的例子。

如果<href='/list'>

href = $('css_selector').attr('href')
"/list"
href = document.querySelector('css_selector').href
"http://localhost/list"

或者您可以将从jQuery获得的href附加到此

href = document.URL +$('css_selector').attr('href');

或jQuery方式

href = $('css_selector').prop('href')

最后,调用它来更改浏览器当前页面的网址

window.location.href = href

或使用window.open(url)

弹出

Here是JSFiddle中的一个例子。

答案 5 :(得分:-1)

我遇到了类似的问题,如何点击按钮,而不是链接。它在方法.trigger('click')或[0] .click()中没有成功,我不知道为什么。最后,以下内容对我有用:

$('#elementid').mousedown();