现在这里有很多类似的问题,但我想知道,如果我不想只改变窗口的location
,我会怎么做,但是触发任何可能绑定的函数click
事件,只有在href
可以使用它时才会更改;如果没有侦听器,则只需重定向。
例如:
var a = $('.edithost');
a.click(function() {return false;});
如果我用鼠标点击链接,它永远不会把我带到href,所以只需将用户重定向到attr('href')
就会改变页面的预期行为。此外,点击不仅适用于链接,也适用于按钮,在这种情况下,我必须提交表单等。
所以我想知道,是否可以模拟单击一个元素,以便浏览器的所有行为完全相同,就好像用鼠标点击一样?
没有绑定链接的侦听器。
示例:
var a = $('<a href="google.com">google</a>');
a.click();
a.trigger('click');
这不会带你去谷歌,我想做到。
更新:
.click()
无效。 trigger('click')
也是。 preventDefault
与此无关
答案 0 :(得分:14)
在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();
答案 1 :(得分:2)
尝试a[0].click();
这将执行DOM元素的click
方法,而不是触发事件。
答案 2 :(得分:0)
是的,很简单:
$('#YourSelector').click();
这将模拟用户点击。
答案 3 :(得分:-1)
我真的不知道你想做什么。 有了这个:
a.click(function(e){
e.preventDefault();
});
您可以停止事件的默认行为(在这种情况下,重定向到a.attr('href'))。 然后,您可以执行所需的任何任务,然后手动重定向用户。
这是你要找的吗?
如果您想触发点击事件,请执行
a.click();