使用javascript / jquery模拟点击“a”元素
我试图模拟一个元素上的点击。 HTML的相同如下
<a id="gift-close" href="javascript:void(0)" class="cart-mask-close p-abs" onclick="_gaq.push(['_trackEvent','voucher_new','cart',$(this).attr('rel')+'-mask_x_button-inaction']);" rel="coupon"> </a>
我怎样才能模拟点击它。 我努力了
document.getElementById("gift-close").click();
但它没有做任何事情
使用jQuery: $('#gift-close').trigger('click');
使用JavaScript: document.getElementById('gift-close').click();
尝试使用这里描述的document.createEvent
https://developer.mozilla.org/en-US/docs/Web/API/document.createEvent
模拟点击的function代码应该如下所示:
function simulateClick() { var evt = document.createEvent("MouseEvents"); evt.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null); var a = document.getElementById("gift-close"); a.dispatchEvent(evt); }
使用jQuery:
$( '#礼品接近')点击()。
你已经试过的代码:
document.getElementById("gift-close").click();
…应该工作,只要该元素实际存在于您的DOM运行时。 一些可能的方法来确保包括:
- 从窗口的
onload
处理程序运行您的代码。 http://jsfiddle.net/LKNYg/ - 如果您使用jQuery,请从文档就绪处理程序运行您的代码。 http://jsfiddle.net/LKNYg/1/
- 将代码放在源html中的元素之后的脚本块中。
所以:
$(document).ready(function() { document.getElementById("gift-close").click(); // OR $("#gift-close")[0].click(); });
尝试:
document.getElementById("gift-close").onclick();
或jQuery:
$("#gift-close")[0].onclick();
使用此代码来点击:
$("#gift-close").click();
下面的代码片段!
请在MDN上查看这些文档和示例,并find答案。 这就是我想说的做法。
创build和触发事件
派遣活动(示例)
取自“调度事件(示例)” – HTML-link(模拟点击):
function simulateClick() { var evt = document.createEvent("MouseEvents"); evt.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null); var cb = document.getElementById("checkbox"); var canceled = !cb.dispatchEvent(evt); if(canceled) { // A handler called preventDefault alert("canceled"); } else { // None of the handlers called preventDefault alert("not canceled"); } }
这是我将如何做(2017 ..):
只需使用MouseEvent 。
function simulateClick() { var evt = new MouseEvent("click"); var cb = document.getElementById("checkbox"); var canceled = !cb.dispatchEvent(evt); if (canceled) { // A handler called preventDefault console.log("canceled"); } else { // None of the handlers called preventDefault console.log("not canceled"); } }
document.getElementById("button").onclick = evt => { simulateClick() } function simulateClick() { var evt = new MouseEvent("click"); var cb = document.getElementById("checkbox"); var canceled = !cb.dispatchEvent(evt); if (canceled) { // A handler called preventDefault console.log("canceled"); } else { // None of the handlers called preventDefault console.log("not canceled"); } }
<input type="checkbox" id="checkbox"> <br> <br> <button id="button">Check it out, or not</button>
在这里,试试这个:
$('#gift-close').on('click', function () { _gaq.push(['_trackEvent','voucher_new','cart',$(this).attr('rel')+'-mask_x_button-inaction']); });