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

时间:2014-08-22 17:29:06

标签: javascript jquery if-statement

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

我的功能是这样的:

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

每个#slide_ids都有一个if语句。简化这个的最佳方法是什么,所以我有一个函数而不是6个不同的if语句?

2 个答案:

答案 0 :(得分:3)

使用starts with selector

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

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

答案 1 :(得分:3)

循环那个傻逼!首先,应用一个类(我使用.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();

如果要修改幻灯片以外的对象,请使用循环,否则如果要修改幻灯片,请使用过滤器。无论哪种方式,都应该有效。