Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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
Jquery 如何设置一个for循环,其中唯一改变的是id_Jquery_Arrays_Class_For Loop_Onclick - Fatal编程技术网

Jquery 如何设置一个for循环,其中唯一改变的是id

Jquery 如何设置一个for循环,其中唯一改变的是id,jquery,arrays,class,for-loop,onclick,Jquery,Arrays,Class,For Loop,Onclick,我有一堆jquery函数,我知道它们在for循环中会得到更好的利用,但每次我尝试设置它时,它都不起作用 下面是我希望for循环执行的操作: $("episode1").click( function () { if ($("#episode2").hasClass('clicked')) { $("#episode2").removeClass('clicked'); } else if ($("#episode3").hasClass('clicked'

我有一堆jquery函数,我知道它们在for循环中会得到更好的利用,但每次我尝试设置它时,它都不起作用

下面是我希望for循环执行的操作:

$("episode1").click(
function () {
    if ($("#episode2").hasClass('clicked')) {
        $("#episode2").removeClass('clicked');
    }
    else if ($("#episode3").hasClass('clicked')) {
        $("#episode3").removeClass('clicked');
    }
    else if ($("#episode4").hasClass('clicked')) {
        $("#episode4").removeClass('clicked');
    }
    else if ($("#episode5").hasClass('clicked')) {
        $("#episode5").removeClass('clicked');
    }
    else if ($("#episode6").hasClass('clicked')) {
        $("#episode6").removeClass('clicked');
    }
    else if ($("#episode7").hasClass('clicked')) {
        $("#episode7").removeClass('clicked');
    }
    else if ($("#episode8").hasClass('clicked')) {
        $("#episode8").removeClass('clicked');
    }
    else if ($("#rogueone").hasClass('clicked')) {
        $("#rogueone").removeClass('clicked');
    }
    else if ($("#solo").hasClass('clicked')) {
        $("#solo").removeClass('clicked');
    }
});

如何设置阵列?仅凭id标记?

给它们一个公共类,而不是单击
,这样就简单了

$('.episodescroll.clicked').removeClass('clicked');
如果要排除刚才单击的内容,可以执行以下操作:

$('.episodescroll.clicked').not(this).removeClass('clicked');
否则,您可以只选择多个元素

$("#episode2, #episode3, #episode4").removeClass('clicked');

不过,我建议您选择第一条路线。

您可以在一组ID上循环,并在找到第一个符合条件的ID时停止

const ids = ["episode2", "episode3", "episode4", "episode5", "episode6", "episode7", "episode8", "rogueone", "solo"];
$.each(ids, function(i, id) {
    if ($("#" + id).hasClass("clicked")) {
        $("#" + id).removeClassClass("clicked");
        return false;
    }
});
从回调函数返回
false
,循环结束

但如果DOM中元素的顺序与数组中的顺序相同,则可以将其简化为:

$(".episodescroll.clicked").not(this).first().removeClass("clicked");

给他们一个公共类,而不是
clicked
,然后是一个简单的
$('.otherClass.clicked').removeClass('clicked')
@Taplar
如果
表示他只想删除第一个,而不是全部。我觉得这是一个假设。假设他不只是想找出哪一个被点击过。你能澄清一下吗@BrookeMortensenthey他们都有“eposodescroll”类,但我不想让我正在按的那一集的类“lose the class”clicked用一个版本更新我的答案,该版本使用
not()
来排除单击的元素。@Taplar我考虑过,但这将使用DOM排序,不是数组中的顺序。他们很可能是一样的,但我不想假设。谢谢你们的帮助!我真的很感激$('.eposodescroll.clicked')。不是(这个)。removeClass('clicked');工作得很好。非常感谢你!