Javascript 如何确定重复点击一组元素中的每一个?
我有一堆点,我需要重复点击每个点 我使用数组,在数组中,我在第一次单击每个元素之后放置它。然后我比较了clicked元素和那个数组,但它不起作用,点击次数是无限的Javascript 如何确定重复点击一组元素中的每一个?,javascript,jquery,Javascript,Jquery,我有一堆点,我需要重复点击每个点 我使用数组,在数组中,我在第一次单击每个元素之后放置它。然后我比较了clicked元素和那个数组,但它不起作用,点击次数是无限的 $(function(){ var clickedDots = new Array(); var dotsClick = 0; $('.dot').on('click',function(e){ if(!clickedDots.includes($(this))) { dotsClick++;
$(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已修改。您的解决方案很好,但第一个答案更接近我的问题。