为什么我不能在jQuery中单击()链接?

时间:2011-11-14 18:53:22

标签: javascript onclick jquery mouseclick-event

我在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()未被点击的链接

5 个答案:

答案 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选择只处理点击这一点。