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

时间:2018-05-30 19:26:54

标签: jquery arrays class for-loop onclick

我有一堆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标签?

2 个答案:

答案 0 :(得分:1)

除了clicked之外,给他们一个共同的课程,然后它就是一个简单的

$('.episodescroll.clicked').removeClass('clicked');

如果您想要排除刚刚点击的那个,那么您可以这样做:

$('.episodescroll.clicked').not(this).removeClass('clicked');

否则你可以选择多个元素。

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

我建议去第一条路线。

答案 1 :(得分:1)

您可以遍历一系列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");