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

我在jQuery中遇到了一个好奇心:如果我在一个链接上调用.click() ,就会调用click事件处理程序,但实际上并没有跟踪该链接(就像它在浏览器中被点击一样):

 Link $("#link").click() // won't take me to Google 

但是在普通的Javascript中,一切都按预期运行:

 document.getElementById("link").click() // *will* take me to Google 

这显然是故意的行为 – 但我正在努力解决为什么click是这样实现的 – 链接的特殊例外?

在这里小提琴: http : //jsfiddle.net/9a6sp/

澄清:我不是问如何点击JS中的链接,而是为什么jQuery中的默认行为实际上是在调用.click()没有点击链接

跨浏览器不支持domelement.click()进行重定向。 如果您需要重定向到链接中的位置,您可以使用:

 window.location = $('#link').prop('href'); 

jQuery.click()用于将单击处理程序绑定到元素。 但是,它可以用于触发使用jQuery绑定的click()事件。

jQuery.trigger()将触发绑定事件处理程序,例如$(someElement).trigger("click");

如果你想在jQuery中触发一个链接,我可以建议如下。

 $(someelement).click(function () { window.location = $(link).attr("href"); }); 

也许这就是你要找的? 首先,您需要附加点击事件。 然后你可以使用触发器来触发它。

       BLAH   

为什么这不起作用,在jsFiddle $('#link')中没有选择html中的锚点,而click()失败。 甚至类型选择器$('a').href也会失败。

http://jsfiddle.net/yangchenyun/L9EUS/

该代码适用于普通浏览器。 我已经使用此代码jQuery('a').eq(1).click()在chrome concole中的jQuery('a').eq(1).click() .click jQuery('a').eq(1).click()测试了stackoverflow.com上的代码,它触发了徽标上的click()

总而言之 ,click()链接在jQuery()中工作。 jsfiddle.net中断了正常的jQuery函数。

我只是猜测为什么 jQuery团队选择以这种方式实现,因为我不是在jQuery团队,但是锚标签的导航方面可以由其他UI行为触发,而不仅仅是用鼠标点击。 例如,在普通的旧javascript中,使用键盘激活元素不会触发onClick操作,但它触发锚标记的导航操作。

换句话说,通过单击链接,您只是使用几种可能的机制之一导航到引用的端点,但导航和单击不是同一事件,因此jQuery选择仅对此处理单击。