如何模拟用户单击JQuery中的链接?

现在这里有很多类似的问题,但我想知道,我该怎么做,如果我不想只是改变窗口的location ,而是触发任何可能绑定到click事件的函数,并且只改变href如果它们没问题,或者只是重定向,如果没有听众。

例如:

 var a = $('.edithost'); a.click(function() {return false;}); 

我应该用鼠标点击链接,它永远不会把我带到href,所以只需将用户重定向到attr('href')就会改变页面的预期行为。 此外,点击不仅适用于链接,也适用于按钮,在这种情况下,我必须提交表单等。

所以我想知道,是否可以模拟单击一个元素,以便浏览器的所有行为完全相同,就像用鼠标点击一样?

没有绑定到链接的侦听器。

例:

 var a = $('google'); a.click(); a.trigger('click'); 

这不会带你去谷歌,我想让它做到。

更新: .click()将无法正常工作。 trigger('click') preventDefault与此无关

在IE中,您可以在元素上调用.click() ,但对于标准浏览器,您需要通过创建本机鼠标事件来模拟click事件,然后使用dispatchEvent来触发它。

我在这个jQuery’插件’中总结了这一切:

 $.fn.simulateClick = function() { return this.each(function() { if('createEvent' in document) { var doc = this.ownerDocument, evt = doc.createEvent('MouseEvents'); evt.initMouseEvent('click', true, true, doc.defaultView, 1, 0, 0, 0, 0, false, false, false, false, 0, null); this.dispatchEvent(evt); } else { this.click(); // IE } }); } 

现在,请致电:

 $('.edithost').simulateClick(); 

尝试a[0].click();

这将执行DOM元素的click方法,而不是触发事件。

是的,非常简单:

 $('#YourSelector').click(); 

这将模拟用户点击。

我真的不知道你想做什么。 有了这个 :

 a.click(function(e){ e.preventDefault(); }); 

您可以停止事件的默认行为(在这种情况下,重定向到a.attr(’href’))。 然后,您可以执行所需的任何任务,然后手动重定向用户。

这是你在找什么?

如果你想触发点击事件,就这样做

 a.click();