如果我还没有使用绑定或单击将事件处理程序绑定到<a>链接,我可以调用jQuery的click()来跟踪它吗?
我的JavaScript中有一个计时器,一旦时间过去,它需要模拟单击链接以转到另一个页面。为此,我使用了jQuery的函数。我已经使用过,而且我可以让它按预期与所有三个一起工作。click()
$().trigger()
window.location
我观察到一些奇怪的行为,我试图理解发生了什么以及为什么。click()
我正在使用Firefox来完成我在这个问题上描述的所有内容,但我也对其他浏览器将如何处理这个问题感兴趣。
如果我没有使用或设置事件处理程序,那么调用似乎根本没有做任何事情。它不会为此事件调用浏览器的默认处理程序,因为浏览器不会加载新页面。$('a').bind('click',fn)
$('a').click(fn)
$('a').click()
但是,如果我先设置事件处理程序,则即使事件处理程序不执行任何操作,它也会按预期工作。
$('a').click(function(){return true;}).click();
这将加载新页面,就好像我自己单击了a一样。
所以我的问题是双重的:这种奇怪的行为是因为我在某个地方做错了什么吗?以及为什么如果我没有创建自己的处理程序,调用对默认行为不执行任何操作?click()
正如霍夫曼在试图复制我的结果时所确定的那样,我上面描述的结果实际上并没有发生。我不确定是什么导致了我昨天观察到的事件,但我今天确信这不是我在问题中描述的。
所以答案是你不能在浏览器中“假装”点击,jQuery所做的就是调用你的事件处理程序。您仍然可以使用来更改页面,这对我来说很好。window.location