【问题标题】:trigger a click on multiple elements with the same class触发单击具有相同类的多个元素
【发布时间】:2017-09-14 20:12:15
【问题描述】:

我正在尝试触发对同一类的多个元素的点击,但是当我这样做时,只会点击第一个元素而不点击其他元素,坦率地说,我试图通过以下方式对所有 ask.fm 个人资料答案进行点赞使用Firefox的控制台,这就是我所做的

$('.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>

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

【问题讨论】:

  • 在此处添加您的 html 代码。它也可能对我们有帮助
  • trigger 执行附加到匹配元素的所有处理程序和行为,或者换句话说,所有具有该类的元素,所以问题不在于trigger,显然是你!
  • 同时添加您的.like 点击处理程序代码
  • 显示你从$('.like')元素触发的函数..

标签: javascript jquery jquery-selectors


【解决方案1】:

坦率地说,我正在努力为所有 ask.fm 个人资料答案点赞

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

解决方法是为其添加 睡眠您应该调整睡眠值,因为这取决于他们的秘密配置阈值)。

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

var sleep = 0;
$('.like').each(function(){
    var likeElement = $(this);
    setTimeout(function() {
        likeElement.trigger('click');
    }, sleep);
    sleep += 10000;
});

请同时验证该做法是否符合网站的政策。

【讨论】:

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

试试这个:为所有类似的元素编写一个点击处理程序,然后在其上触发点击事件。

$(function(){
  //register a handler
  $( ".like" ).on( "click", function() {
   alert( $( this ).text() );
  });
  //trigger click 
  $( ".like" ).trigger( "click" );
});

JSFiddle Demo

【讨论】:

  • 好的,你的代码可以工作,但我每次都必须点击一个警告框,这不是我想做的,我希望代码在没有用户干预的情况下点击元素
  • 我保留了警告框以显示每个 div 通过显示其文本被点击,您可以删除它并放置您的逻辑。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-15
  • 1970-01-01
  • 2018-10-20
  • 2016-12-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多