模拟点击';a';使用javascript/jquery的元素
我试图模拟在一个元素上单击。 相同的HTML如下所示模拟点击';a';使用javascript/jquery的元素,javascript,jquery,hyperlink,click,simulate,Javascript,Jquery,Hyperlink,Click,Simulate,我试图模拟在一个元素上单击。 相同的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>
<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(“礼物关闭”)。单击()代码>
但是使用jQuery它什么都不做:
$('#gift-close').click();
$(“#礼品收尾”)。单击() 使用jQuery:$('#礼品收尾').trigger('click')代码>
使用JavaScript:document.getElementById('gift-close')。单击()代码>使用此代码单击:
$("#gift-close").click();
您已经尝试过的代码:
document.getElementById("gift-close").click();
…只要元素在运行时确实存在于DOM中,它就可以工作。确保这一点的一些可能方法包括:
从窗口的onload
处理程序运行代码李>
如果使用jQuery,请从文档就绪处理程序运行代码李>
将代码放在源html中元素后面的脚本块中
因此:
这里,试试这个:
$('#gift-close').on('click', function () {
_gaq.push(['_trackEvent','voucher_new','cart',$(this).attr('rel')+'-mask_x_button-inaction']);
});
尝试使用此处描述的document.createEvent
模拟单击的函数的代码应如下所示:
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);
}
下面是代码片段强>
请在MDN上查看这些文档和示例,您将找到您的答案。我想说,这是做这件事的最佳方式
取自“调度事件(示例)”-HTML链接(模拟单击):
我会这样做(2017年):
简单使用
document.getElementById(“按钮”).onclick=evt=>{
模拟单击()
}
函数模拟单击(){
var evt=新鼠标事件(“点击”);
var cb=document.getElementById(“复选框”);
var canceled=!cb.dispatchEvent(evt);
如果(取消){
//名为preventDefault的处理程序
控制台日志(“已取消”);
}否则{
//没有一个处理程序调用preventDefault
控制台日志(“未取消”);
}
}
检查它,或者不检查它
尝试在click()
方法中添加一个函数
$('#gift-close').click(function(){
//do something here
});
它在click()方法中分配了一个函数,而不是将其保留为空。您在哪里执行document.getElementById(“礼物关闭”)。click()代码>从?如果您使用onload处理程序(或者确保正确),那么它将起作用。如果您真的使用jQuery,这是您首先学习的最基本的内容之一。请查看了解更多信息。我想使内联onclick处理程序可执行请不要编写href=“javascript:void(0)”
。它有严重的SEO问题。请注意,用户单击和触发的编程单击的工作方式不同。当document.getElementById(“礼物关闭”)。click();
没有这样做时,为什么会这样做?因为document.getElementById(“礼物关闭”)不是一个jQuery对象,而是一个DOM对象。您也可以尝试一下:$(document.getElementById)(“礼物关闭”)。click();@techfoobar和Alex,DOM元素有一个。click()
方法。@nnnnnnnn-Wow!对我来说是全新的信息..从来都不知道..Tks:-)哦,是的。你说得对。那么问题是他应该在页面加载后执行click代码,即在onReady事件中;)为什么document.getElementById(“礼物关闭”)会起作用.click();
没有?您必须从javascript的onload
处理程序或$(document)运行代码。准备(function(){//write code here})
JQUERI要使内联onclick处理程序可执行。这在我提供的两个JSFIDLE演示中都会发生。我发现的技巧(与“最佳”答案相比)是使用[0]。这导致了脚本正常工作。另外,请看这个问题,这描述了创建自定义事件的新方法。哇,太棒了!我刚刚尝试了您的解决方案来更新您的答案,它确实有效:)如果有人想尝试,请在控制台中执行此操作….var evt=document.createEvent(“MouseEvents”);evt.initMouseEvent(“单击,真,真,窗口,0,0,0,0,假,假,假,假,假,假,假,0,空);var a=$('div#answer-17569610 a.vote-up-off')。获取(0);a、 调度事件(evt);将“document.createEvent”更改为“new CustomEvent”以符合新标准。这是更好的解决方案,因为它实际上模拟了单击,这有时与简单地触发onClick事件不同。特别是如果元素正在做两件事,比如打开一个链接(在一个新窗口中?)和处理点击事件(在同一页面上做某事)。感谢Ihor.document.getElementById('gift-close').onClick()
在Chrome、Firefox或Safari中不起作用。但是,将onClick()
更改为click()
确实有效。询问者不是明确地说这不起作用吗?我不明白上面的意思。@HugoZink,因为它确实有效。。?在投票/评论之前你试过什么吗?@AndréDion我试过了,但它在Firefox中似乎不起作用。可能是出于安全考虑。
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");
}
}
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");
}
}
$('#gift-close').click(function(){
//do something here
});