我在jQuery中遇到了好奇心:如果我在链接上调用.click()
,则会调用click
事件处理程序,但实际上并未遵循该链接(就好像它在浏览器中被单击一样) ):
<a id="link" href="http://www.google.com>Link</a>
$("#link").click() // won't take me to Google
但是在普通的Javascript中,一切都按预期运行:
document.getElementById("link").click() // *will* take me to Google
这显然是intentional behaviour - 但我正在努力解决为什么click
像这样实施 - 链接的特殊例外?
在这里小提琴:http://jsfiddle.net/9a6sp/
澄清:我不是在询问如何点击JS中的链接,而是为什么jQuery中的默认行为实际上是在调用.click()
时未被点击的链接
答案 0 :(得分:8)
domelement.click()
进行重定向。如果您需要重定向到链接中的位置,可以使用:
window.location = $('#link').prop('href');
答案 1 :(得分:4)
jQuery.click()用于将单击处理程序绑定到元素。但是它可以用于触发使用jQuery绑定的click()事件。
jQuery.trigger()将触发绑定事件处理程序,例如$(someElement).trigger("click");
如果你想在jQuery中触发链接,我可以建议以下内容。
$(someelement).click(function () {
window.location = $(link).attr("href");
});
答案 2 :(得分:0)
也许这就是你要找的东西? 首先,您需要附加点击事件。 然后你可以使用触发器来启动它。
<html>
<head title="jQuery Test">
<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jquery/jquery-1.7.js"></script>
<script type="text/javascript">
$(document).ready(function () {
$('#blah').click(function () {
alert('clicked');
});
$('#blah').trigger('click');
});
</script>
</head>
<body>
<a id="blah" href="#">BLAH</a>
</body>
</html>
答案 3 :(得分:0)
为什么这不起作用,在jsFiddle $('#link')
中没有选择html中的锚点,click()
失败。甚至类型选择器$('a').href
也会失败。
http://jsfiddle.net/yangchenyun/L9EUS/
代码在普通浏览器中运行。我已经使用此代码在stackoverflow.com上测试了代码
在chrome concole中jQuery('a').eq(1).click()
,它会触发徽标上的click()
。
总结,点击()链接在jQuery()中工作。 jsfiddle.net中断了正常的jQuery函数。
答案 4 :(得分:-1)
我只是猜测为什么 jQuery团队选择以这种方式实现,因为我不是jQuery团队,但是锚标记的导航方面可以由其他UI行为,而不仅仅是用鼠标单击。例如,在普通的旧javascript中,使用键盘激活元素不会触发onClick操作,但将触发锚标记的导航操作。
换句话说,通过单击链接,您只是使用几种可能的机制之一导航到引用的端点,但导航和单击不是同一个事件,所以jQuery选择只处理点击这一点。