循环触发点击事件

托马斯

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

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

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

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

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

我尝试添加delay(500),甚至delay(1500)追加到,click()但这似乎并没有改变任何内容。

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

更多的想法和信息

我认为这与异步性有关。就像循环的其余部分一样,除了其他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),但如上所述,这也是不需要的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章