我想使用JavaScript模拟页面上任何链接的点击。如果该链接有一些绑定到其'onclick'事件的函数(由任何其他JS我没有任何控制),那么必须调用该函数,否则链接应该以正常方式运行并打开一个新页面。
我不确定只检查'onclick'处理程序的值就足够了。我想构建它,以便它适用于任何链接元素。
我无法使用任何JS库(不一定是jQuery)或只使用JavaScript来控制绑定到链接的onclick事件的函数。
编辑:借助以下答案,看起来可以检查使用jQuery附加的事件处理程序或使用onclick
属性。如何检查使用addEventListener
/任何其他JS库附加的事件处理程序,以便它是万无一失的?
答案 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。做到了,它对我有用。