现在这里有很多类似的问题,但是我想知道,如果我不想更改窗口的location
,而是触发可能绑定(bind)到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');
这不会带您去Google,我想做到。
更新:
.click()
无法正常工作。 trigger('click')
。 preventDefault
与这个无关 最佳答案
在IE中,您可以在元素上调用.click()
,但是对于标准浏览器,您需要通过创建 native 鼠标事件来模拟click事件,然后使用dispatchEvent
来触发它。
我在这个jQuery'plugin'中总结了所有这些内容:
$.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();