我试图触发jQuery的超链接上的点击事件,如下所示。超链接没有任何ID,但确实具有CSS类
$(document).ready(function () { $('.cssbuttongo').trigger('click'); });
上面的功能不起作用。这是超链接
<a href="hyperlinkurl" class="cssbuttongo">hyperlink anchor</a>
我试图触发jQuery的超链接上的点击事件,如下所示。超链接没有任何ID,但确实具有CSS类
$(document).ready(function () { $('.cssbuttongo').trigger('click'); });
上面的功能不起作用。这是超链接
<a href="hyperlinkurl" class="cssbuttongo">hyperlink anchor</a>
Answers:
我没有事实证据来证明这一点,但是我已经遇到了这个问题。似乎在<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渲染代码混杂在一起,这是不可行的。
onclick
事件的可能性。只需$('.cssbuttongo')[0].click()
正确模拟整个点击即可。
本机DOM方法做正确的事情:
$('.cssbuttongo')[0].click();
^
Important!
不管不管href
是URL,片段(例如#blah
)还是,它都有效javascript:
。
请注意,这将调用DOMclick
方法而不是jQueryclick
方法(这是非常不完整的,并且会完全忽略href
)。
$('.cssbuttongo').click(); // ignores href!
不能保证能正常工作。后一种将始终有效,因为使用索引[0]将使jQuery Object变为常规JS Object,这与浏览器使用的完全相同。@Wei Liu
除了romkyns的出色答案之外,这里还有一些相关的文档/示例。
DOM Elements具有本机.click()
方法。
该
HTMLElement.click()
方法模拟在元素上的鼠标单击。当使用click时,它还会触发元素的click事件,该事件会冒泡到文档树(或事件链)上方的元素,并且也触发其click事件。但是,单击事件冒泡不会导致
<a>
元素启动导航,就好像收到了真正的鼠标单击一样。 (mdn参考)
有关W3文档。
一些例子..
您可以从jQuery对象访问特定的DOM元素:(示例)
$('a')[0].click();
您可以使用该.get()
方法从jQuery对象检索DOM元素:(示例)
$('a').get(0).click();
如预期的那样,您可以选择DOM元素并调用该.click()
方法。(例)
document.querySelector('a').click();
这是值得指出的是,jQuery是不是需要触发本地.click()
事件。
通过JavaScript触发点击不会打开超链接。这是浏览器中内置的安全措施。
不过,请参见此问题的一些解决方法。
[0]
对您的小提琴很重要
只是想让大家知道,接受的答案并不总是有效。
这是一个例子,它将失败。
如果 <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)
这是JSFiddle中的一个示例。
$('css_selector')[0].click()
?它在此JsFiddle中工作...
$('.cssbuttongo').click();
将不起作用,因为它仅提供href的任何值,而不是URL的URL。浏览器使用。抱歉,误导性评论。
[0].click()
行得通,为什么您的答案没有提及?
location.href
接受相对路径,因此使用/list
将自动在当前域之前。这样就可以了。