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

Flu*_*ffy 6 javascript jquery

现在这里有很多类似的问题,但我想知道,我该怎么做,如果我不想只改变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)