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

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

我不确定只要检查“onclick”处理程序的值就足够了。 我想build立这个,以便它在任何链接元素上工作。

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

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

您可以使用点击function来触发所选元素上的点击事件。

例:

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

您可以在jQuery的文档中了解各种select器。

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

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

不过不知道addEventListener。

为什么不只是好的'JavaScript'?

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

只是

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

使用.trigger(),你可以模拟许多types的事件,只是把它作为parameter passing。

简单! 只要使用jQuery的点击function:

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

尝试这个

 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"); 

首先看到这个问题 ,看看你如何find一个链接有一个jQuery处理程序分配给它。

下一次使用:

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

看看是否有一个JavaScript事件分配给它。

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

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

并遵循它。

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

所有这些可能不会说当你使用rails远程窗体button来模拟点击。 我试图从原型移植好事件模拟: 我的片段 。 只是做了它,它适用于我。