触发具有相同类的多个元素的点击

6

我正在尝试在多个具有相同类的元素上触发点击事件,但是当我这样做时,只有第一个元素被点击了,其他的没有,坦率地说,我正在尝试使用Firefox控制台为所有ask.fm个人资料回答点赞,所以我做了以下操作:

$('.like').trigger('click');

但我意识到只有第一个元素(答案)被点击,所以我做了其他事情。
$('.like').each(function(){$(this).trigger('click');}) 

但问题仍然存在,那么我在这里做错了什么!!

编辑:HTML代码

所有答案中都包含此元素。
<a class="like hintable" hint="Like" href="#" onclick="Like.quickLike(128332156539, &quot;mo7am_rs&quot;, &quot;/likes/am77r/question/128332156539/add&quot;); return false;" style="display:block"></a>

我想在所有答案元素中点击此元素。

2
请在此处添加您的HTML代码。这可能对我们有所帮助。 - Coding Enthusiast
trigger 执行与匹配元素相关联的所有处理程序和行为,换句话说,执行该类别下的所有元素,因此问题不在于 trigger,而是在于你,显然! - adeneo
请添加您的 .like 点击处理代码。 - Tushar
展示从$('.like')元素触发的函数。 - Qarib Haider
2个回答

11

坦白说,我正在尝试给所有 ask.fm 资料回答点赞。

你的代码应该是可以工作的,因此他们可能会忽略/阻止连续两次点击,以防止机器人和误点。

解决这个问题的方法是在代码中添加 sleep 延时函数你需要调整延时值,因为它取决于他们秘密配置的阈值)。

以下代码将每隔 10 秒尝试一次点击:

var sleep = 0;
$('.like').each(function(){
    var likeElement = $(this);
    setTimeout(function() {
        likeElement.trigger('click');
    }, sleep);
    sleep += 10000;
});
请确认该做法是否符合该网站的政策。

我忘了提到我尝试延迟点击过程,但它也没有起作用,你的代码也是如此 :( - MOHAMMAD RASIM
@MOHAMMADRASIM 尝试使用更长的睡眠时间。例如,10000(10秒钟,参见更新的答案)。或者再大一些,例如100000(100秒钟)。正如我所说:您应该调整睡眠值,因为它将取决于他们的秘密配置阈值。 - falsarella
我已经增加了你代码中的超时时间,但是你的代码甚至没有点击第一个元素。 - MOHAMMAD RASIM
1
@MOHAMMADRASIM 你说得对。请看我的更新代码。我已经解决了闭包问题。现在应该可以工作了 :) 谢谢你指出这个问题。 - falsarella

2
尝试这样做:为所有类似元素编写一个点击处理程序,然后触发单击事件。
$(function(){
  //register a handler
  $( ".like" ).on( "click", function() {
   alert( $( this ).text() );
  });
  //trigger click 
  $( ".like" ).trigger( "click" );
});

JSFiddle Demo


1
好的,你的代码可以工作,但每次都要点击一个警告框,这不是我想要的,我希望代码能够在没有用户干预的情况下点击元素。 - MOHAMMAD RASIM
2
我保留了警告框以显示每个div被点击并显示其文本,您可以删除它并放置您的逻辑。 - Bhushan Kawadkar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接