繁体   English   中英

循环触发点击事件

[英]Trigger click event in a loop

我正在编写一个书签,以从我购买的Indiegala捆绑包中收集信息。 我不是一次赠与整个捆绑包,而是一次赠予连体衣和二人一组,因此拥有单独的赠品网址会更容易。

在他们拿到钥匙之前,我就可以用一个简单的选择器将其收集起来,现在他们有了一些图片,您必须单击才能获得每个Steam / Desura游戏的礼物URL。

我想循环单击所有这些礼物图像,以使礼物URL出现,然后循环浏览并获得这些礼物URL。 我这样写:

var gifts = $('#icon-gift img');
for(var j=0; j < gifts.length-1; j++){
  gifts[j].click();
}

循环浏览所有图像并触发点击,以便出现礼物网址。 我知道它会遍历每个图像,因为它会记录到控制台,所以我知道它不会卡住,但是由于某种原因,它仅单击了可用的第一个图像。 单击图像后(非常感激),它将被永久单击,并且在刷新时仅包含礼物网址,然后如果我再次运行循环,它将执行下一个图像(但这违背了在脚本中进行操作的目的)。

我尝试在click()添加一个delay(500)甚至delay(1500) ,但这似乎并没有改变。

我的问题是:有人知道为什么会发生这种情况吗?是否有解决此问题的建议?

更多想法和信息

我认为这与异步性有关。 就像循环的其余部分一样,除了其他click事件之外,其他所有操作都没有。 我试过了:var gifts = $('#icon-gift img');

$.each(gifts, function(i, val){
  setTimeout(function(){
    val.click();
    val.remove();
  }, 1000);
});

并且它仍然只处理第一个图像,并删除所有其他图像。 如果我手动检查gifts[0].remove(); 然后gifts[0].click(); 它做下一个。 这正是我以为.each()for loop会做的事情,但是似乎无法执行下一次单击,而前一个仍在执行或仍然存在。

无需使用for loop

$('#icon-gift img').click();

够了 它将对所有通过选择进行点击#icon-gift img - >这是所有后代图像#icon-gift 他们全部。

否则,您的代码无法正常工作,原因是使用了gifts[j] ,实际上是从jQuery选择器的数组中提取对DOM HTML节点元素的JS引用,因此不再是jQuery Object元素。 将其再次包装在jQuery对象中将可以使用$(gifts[j])或使用eq()选择器(如gifts.eq(j) ,但是如上所述,也不需要。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM