jQuery onclick具有相同类的多个元素

时间:2017-08-22 04:55:50

标签: jquery html onclick click

我一直在寻找这个问题,我觉得我正处于答案的尖端,但我被卡住了!基本上,我希望单击一个元素,然后单击同一个类的其他两个元素。当我这样做时,点击一个元素,而另一个元素不是:

jQuery('.et-pb-arrow-prev').on('click', function(){
    jQuery('a.et-pb-arrow-prev').click();
    console.log('DONE');
});

我可以切换元素,这样点击的元素就会被点击而不是另一个,但是我无法点击其他元素。相反,我认为这是一个错误:

Uncaught RangeError: Maximum call stack size exceeded

我想我差不多了,但我现在迷路了。任何帮助,将不胜感激。

4 个答案:

答案 0 :(得分:0)

这里的问题是你的调用函数被设置为无限函数意味着第一次点击基于类 .et-pb-arrow-prev ,这将触发另一个点击事件,这也是一个 .et-pb-arrow-prev ,因此它将继续

所以我的建议是将ids代替点击事件的类

答案 1 :(得分:0)

当您触发单击时,将再次调用当前元素的单击处理程序,这是调用堆栈错误的原因。



style

jQuery('.et-pb-arrow-prev').on('click', function(e, manual) {
  if (typeof manual === 'undefined' || manual === false) {
    jQuery('a.et-pb-arrow-prev').not(this).trigger('click', true);
    console.log('Triggered', this.textContent.trim());
  } else {
    console.log('DONE', this.textContent.trim());
  }
});




答案 2 :(得分:0)

它是一个无限循环,因为你得到了上面提到的错误。尝试为要绑定click事件的元素使用不同的名称,在该事件中,您尝试单击具有相同类的其他两个元素。

Here是示例jsfiddle,我使用了.wrapper类。希望这会有所帮助。

答案 3 :(得分:0)

使用“每个”,其中“这”是类中的每个元素:

$( ".et-pb-arrow-prev" ).each(function(index) {
    $(this).on("click", function(){
        console.log(this, "with index " + index + " is clicked");
    });
});