如何模拟用户单击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();