jquery如何触发href元素上的点击事件

我试图触发jQuery超链接上的点击事件,如下所示。 超链接没有任何id,但它确实有cssclass

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

上面的function不起作用。 这是超链接

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

感谢您的答案。

我没有事实证据certificate这一点,但我已经遇到了这个问题。 似乎在<a>标签上触发click()事件的行为似乎与您所期望的使用inputbutton的行为不同。

我采用的解决方法是在窗口上设置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来呈现代码混合使得这是一个不行。

本地DOM方法正确:

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

无论href是一个URL还是一个​​片段(例如#blah ),甚至是一个javascript: #blah

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

除了romkyns的伟大的答案 ..这里是一些相关的文档/例子。


DOM元素具有原生的.click()方法 。

HTMLElement.click()方法模拟鼠标点击一个元素。

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

相关的W3文件 。


几个例子

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

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

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

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

值得指出的是,jQuery不需要触发原生的.click()事件。

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

尽pipe如此,请参阅此问题的一些解决方法。

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

这是一个例子,它会失败。

如果<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') 

最后,调用它来改变浏览器当前页面的URL

 window.location.href = href 

或使用window.open(url)popup

这里是JSFiddle中的一个例子。

我正在面对类似的问题如何点击一个button,而不是一个链接。 它没有在方法.trigger('click')或[0] .click()中取得成功,我不知道为什么。 最后,下面是为我工作:

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