在链接上模拟jQuery/JavaScript中的单击

ank*_*kit 53 javascript jquery onclick

我想使用JavaScript模拟页面上任何链接的点击.如果该链接具有与其"onclick"事件绑定的某些功能(由任何其他JS我没有任何控制),则必须调用该函数,否则链接应以正常方式运行并打开新页面.

我不确定只检查'onclick'处理程序的值就足够了.我想构建它,以便它适用于任何链接元素.

我无法使用任何JS库(不一定是jQuery)或简单地使用JavaScript来控制可能绑定到链接的onclick事件的函数.

编辑:在下面的答案的帮助下,看起来可以检查使用jQuery附加的事件处理程序或使用该onclick属性.如何检查使用addEventListener/任何其他JS库附加的事件处理程序,以便它是万无一失的?

Jan*_*čič 49

您可以使用单击功能触发所选元素上的单击事件.

例:

$( 'selector for your link' ).click ();
Run Code Online (Sandbox Code Playgroud)

您可以在jQuery的文档中了解各种选择器.

编辑:像下面的评论者说的那样; 这仅适用于使用jQuery,内联或"element.onclick"样式附加的事件.它不适用于addEventListener,如果没有定义事件处理程序,它将不会跟随链接.你可以用这样的方法解决这个问题:

var linkEl = $( 'link selector' );
if ( linkEl.attr ( 'onclick' ) === undefined ) {
    document.location = linkEl.attr ( 'href' );
} else {
    linkEl.click ();
}
Run Code Online (Sandbox Code Playgroud)

但是不知道addEventListener.

  • click方法触发链接的onclick方法.它不遵循href属性中定义的url. (2认同)

fra*_*ies 40

为什么不只是好的'javascript?

$('#element')[0].click()

  • 这个好的'javascript怎么样?这是jQuery! (67认同)
  • 通过访问jQuery集中的第一个元素,您将获得一个DOM元素,接下来您将从HTMLElement接口调用一个方法,这实际上是一个好的'javascript' (7认同)

tan*_*hos 30

只是

$("#your_item").trigger("click");
Run Code Online (Sandbox Code Playgroud)

使用.trigger()可以模拟许多类型的事件,只需将其作为参数传递即可.


Rob*_*ant 8

简单!只需使用jQuery的点击功能:

$("#theElement").click();
Run Code Online (Sandbox Code Playgroud)


Yas*_*gla 7

试试这个

function submitRequest(buttonId) {
    if (document.getElementById(buttonId) == null
            || document.getElementById(buttonId) == undefined) {
        return;
    }
    if (document.getElementById(buttonId).dispatchEvent) {
        var e = document.createEvent("MouseEvents");
        e.initEvent("click", true, true);
        document.getElementById(buttonId).dispatchEvent(e);
    } else {
        document.getElementById(buttonId).click();
    }
}
Run Code Online (Sandbox Code Playgroud)

你可以像使用它一样

submitRequest("target-element-id");
Run Code Online (Sandbox Code Playgroud)

  • 这很有效.感谢您发布非jquery版本. (2认同)