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();