Jquery简化了与多个id相关的多个if语句,这些id具有相似的字符

Jquery simplifying multiple if statements related to multiple ids with similar characters

本文关键字:id 字符 这些 相似 语句 Jquery if      更新时间:2023-09-26

我正试图将函数列表简化为单个函数。基本上我有6个div,每个div的id为#slide_,其中下划线是1-6之间的数字(#slide1, #slide2等)。

我的函数是这样的:

if ($("#slide1").hasClass('active')) {});

每个#slide_ id都有一个if语句。什么是最好的方法来简化它,让我有一个函数,而不是6个不同的if语句?

把它循环起来!首先,应用一个类(我使用.slide作为示例):

var $slides = $('.slide');

或者(如果你不能修改HTML)你可以使用@j08691引用的"starts with"选择器:

var $slides = $('[id^="slide"]');

然后在该集合上应用一个for循环:

for(var i = $slides.length; i--;){
    if($slides.eq(i).hasClass('active')){
        // do your magic
    }
}

或者你可以更进一步,如果你对同一个对象做了一些事情,只过滤记录集:

$slides.filter(function(){
    return $(this).hasClass('active');
}).applyMethod();

如果要修改幻灯片以外的对象,则使用循环;如果要修改幻灯片本身,则使用过滤器。

使用以选择符开头:

$("[id^='slide']").each(...)

请注意,这将匹配所有ID以"slide"开头的元素。更好的解决方案是为您想要定位的元素指定一个类,然后选择该类。