Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何确定重复点击一组元素中的每一个?_Javascript_Jquery - Fatal编程技术网

Javascript 如何确定重复点击一组元素中的每一个?

Javascript 如何确定重复点击一组元素中的每一个?,javascript,jquery,Javascript,Jquery,我有一堆点,我需要重复点击每个点 我使用数组,在数组中,我在第一次单击每个元素之后放置它。然后我比较了clicked元素和那个数组,但它不起作用,点击次数是无限的 $(function(){ var clickedDots = new Array(); var dotsClick = 0; $('.dot').on('click',function(e){ if(!clickedDots.includes($(this))) { dotsClick++;

我有一堆点,我需要重复点击每个点

我使用数组,在数组中,我在第一次单击每个元素之后放置它。然后我比较了clicked元素和那个数组,但它不起作用,点击次数是无限的

$(function(){ 

  var clickedDots = new Array();
  var dotsClick = 0;

  $('.dot').on('click',function(e){

    if(!clickedDots.includes($(this))) {
      dotsClick++; /* this variable must increase only once on each element click */
      clickedDots.push($(this));
      console.log(dotsClick);
    }
    else {
      return;
    }
  });    
});

您不需要添加
$(this)
对象,因为每个
.dot
DOM元素都不同于其他元素。您可以在数组中搜索,例如,位置。为此,应使用
.index()
方法

var clickedDots=new Array();
var-dotsClick=0;
$('.dot')。在('click',函数(e)上{
如果(!clickedDots.includes($(this).index())){
dotsClick++;/*此变量在每次元素单击时只能增加一次*/
单击dots.push($(this.index());
console.log(dotsClick);
}
否则{
返回;
}
});
.dot{
背景颜色:浅灰色;
边缘顶部:10px;
}

.
.
.
.
.
.
.
.
.
.
.
.

.
我发现在单击时向
.dot
添加一个
单击的
类,然后评估该类是否已经存在是有益的。因为您使用的是一个类,所以您还可以轻松地将css应用于已单击的项目

$('.dot')。在('click',函数(事件){
if(!$(this).hasClass(“单击”)){
$(this.toggleClass(“单击”,true);
log($('.dot.clicked').length);
}
});
.dot{
背景颜色:浅灰色;
边缘顶部:10px;
}
.点击{
背景色:红色;
边缘顶部:10px;
}

.
.
.
.
.
.
.
.
.
.
.
.

.
请查看我的答案-在您接受后不久发布。另一种选择是使用数据属性,而不是滥用样式功能。@Zim84肯定是可以的,我将添加第二个片段,演示如何执行此操作。@Zim84已修改。您的解决方案很好,但第一个答案更接近我的问题。