现在这里有很多类似的问题,但我想知道,我该怎么做,如果我不想只改变location窗口,但触发任何可能绑定到click事件的函数,并且只改变hrefif他们没关系,或者只是重定向,如果没有听众的话.
例如:
var a = $('.edithost');
a.click(function() {return false;});
Run Code Online (Sandbox Code Playgroud)
我应该用鼠标点击链接,它永远不会把我带到href,所以只需重定向用户就attr('href')可以改变页面的预期行为.此外,点击不仅适用于链接,也适用于按钮,在这种情况下,我必须提交表单等.
所以我想知道,是否可以模拟单击一个元素,以便浏览器的所有行为完全相同,就好像用鼠标点击一样?
没有绑定到绑定的侦听器.
例:
var a = $('<a href="google.com">google</a>');
a.click();
a.trigger('click');
Run Code Online (Sandbox Code Playgroud)
这不会带你到谷歌,我想做到这一点.
更新:
.click()不起作用.trigger('click')太.preventDefault与此无关
Dav*_*ing 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
}
});
}
Run Code Online (Sandbox Code Playgroud)
现在,请致电:
$('.edithost').simulateClick();
Run Code Online (Sandbox Code Playgroud)