我正在尝试使用jquery触发超链接上的click事件,如下所示。超链接没有任何ID但它确实有cssclass
$(document).ready(function () { $('.cssbuttongo').trigger('click'); });
上述功能无效。这是超链接
<a href="hyperlinkurl" class="cssbuttongo">hyperlink anchor</a>
感谢您的回答。
答案 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)
一些例子..
您可以从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();