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

时间:2009-12-03 11:31:35

标签: javascript jquery onclick

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

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

我无法使用任何JS库(不一定是jQuery)或只使用JavaScript来控制绑定到链接的onclick事件的函数。

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

7 个答案:

答案 0 :(得分:46)

您可以使用click功能触发所选元素上的点击事件。

示例:

$( 'selector for your link' ).click ();

您可以在jQuery documentation中了解各种选择器。

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

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

虽然不知道addEventListener。

答案 1 :(得分:39)

为什么不只是好的'javascript?

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

答案 2 :(得分:29)

只是

$("#your_item").trigger("click");

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

答案 3 :(得分:8)

轻松!只需使用jQuery的click函数:

$("#theElement").click();

答案 4 :(得分: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();
    }
}

你可以像

一样使用它
submitRequest("target-element-id");

答案 5 :(得分:1)

首先看一下这个question,看看如果链接有一个分配给它的jQuery处理程序,你将如何找到它。

下次使用:

$("a").attr("onclick")

查看是否有分配给它的javascript事件。

如果以上任何一种情况属实,则调用click方法。如果没有,请获取链接:

$("a").attr("href")

并遵循它。

如果使用addEventListener添加事件处理程序,我恐怕不知道该怎么办。如果您负责整个页面源代码,请仅使用jQuery事件处理程序。

答案 6 :(得分:0)

当您使用rails远程表单按钮模拟点击时,所有这些可能无济于事。我试图从原型中移植好的事件模拟:my snippets。做到了,它对我有用。