如果还没有将事件处理程序绑定到jQueryclick(),我可以调用jQueryclick()来跟随<a>链接,或者已经单击了吗?
我的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
改变页面,这对我来说很好。