我认为jQuery的click()
可以让我们添加一个处理程序或只是点击一个元素吗?
然而,我试过了:
$(function() {
setTimeout(function() {
$('a').first().trigger('click'); // or click(), the same
}, 3000);
});
并等待3秒,它不会点击页面中的第一个<a>
元素...怎么来的?
更新:这与What is the best way to make the Yahoo media player autostart, jQuery?有关,因此应该已经存在用于点击媒体的事件处理程序,那么.click()
如何与{相同} {1}},没有触发该事件处理程序?
答案 0 :(得分:11)
调用click()
方法不会模拟单击链接。它会调用受影响元素上的任何click()
个处理程序。这是一个微妙但重要的区别。如果您想模拟单击链接,则没有可行的跨浏览器方式来执行此操作。
答案 1 :(得分:2)
我最近遇到了类似的问题。没有任何反应的原因是因为锚标签没有jquery调用的“click”方法。例如,如果您将锚标记更改为<button></button>
标记,则.click()将模拟用户按预期单击。
有一些“hacky”解决方法,但这取决于如何设置锚标记的事件处理程序。例如,如果锚标签href属性中有一些javascript,这将起作用(这恰好是我的问题的解决方案):
var lnk = $('a.mylink');
window.location = lnk.attr('href');
答案 2 :(得分:1)
我不确定,如果.first()
是使用此功能的可能方式。你试过吗
$('a:first').click();
代替?如果.first()
不存在,则会抛出错误,永远不会到达.click()
,并且由于它存在于匿名函数中,您甚至可能根本看不到错误(无声地失败)。 / p>
答案 3 :(得分:1)
以下是模拟链接点击的方法(只要这些是普通链接):
location.href = $('a').first().get(0).href;
答案 4 :(得分:0)
如果您已有链接的事件处理程序,则可以使用trigger()
方法:
$('a:first').trigger('click');
答案 5 :(得分:0)
你到底想做什么?链接通常用于重定向到新页面。因此,如果您需要重定向,请使用以下内容:
$(function() {
setTimeout(function() {
window.location.replace("linkToNewPage.html");
}, 3000);
});
答案 6 :(得分:0)
“有一个选项.Plz检查 在这个页面 http://mediaplayer.yahoo.com/api/#example_usage 如果你设置autoplay = true,那就是第一首歌 将自动启动..“
- Kai
关于:
<强> What is the best way to make the Yahoo media player autostart, jQuery? 强>
否则点击将点击处理程序附加到您想要的地方,例如:
$('#MyElementID').click(function() {
//How you want it to behave when you click it.
});
window.setTimeout(YourFunction, 3000);
function YourFunction {
//Your function that runs. Maybe fire the onclick handler?
}
答案 7 :(得分:-1)
您尝试将click()
方法用于其他目的而非其目的。使用了click()
,因此您可以捕获对特定元素的点击,而不是模拟。
了解更多here