在链接上模拟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来模拟点击。 我试图从原型移植好事件模拟: 我的片段 。 只是做了它,它适用于我。