Jquery是否在2个数字之间?

dun*_*140 1 javascript jquery

我正在使用以下 Jquery 尝试在某个幻灯片编号上添加一个类(使用 Royalslider)。下面的代码适用于单个幻灯片编号,但您会注意到我也在尝试对一系列数字实现相同的效果 - 例如,在幻灯片 5-9 之间。然而,这不起作用,并且只为数组中的第一个数字触发。

任何帮助表示赞赏!

JS

// Track slide number and add class
this.rsInstance().ev.on('rsAfterSlideChange', function() {
    if( this.currSlideId === 1) {
        $('.what').addClass('current');
    } 
    else {
        $('.what').removeClass('current');
    }
    if( this.currSlideId === 2) {
        $('.why').addClass('current');
    } 
    else {
        $('.why').removeClass('current');
    }
    if( this.currSlideId === ( 5 || 6 || 7 || 8 || 9 )) {
        $('.accolades').addClass('current');
    } 
    else {
        $('.accolades').removeClass('current');
    }
});
Run Code Online (Sandbox Code Playgroud)

Sat*_*pal 5

为什么不简单?

if (this.currSlideId >= 5 && this.currSlideId <= 9) {
    $('.accolades').addClass('current');
} else {
    $('.accolades').removeClass('current');
}
Run Code Online (Sandbox Code Playgroud)

但是,如果要使用数组,则使用indexOf(),它将返回可以在数组中找到给定元素的第一个索引,如果不存在,则返回 -1。

if ([5,6,7,8,9].indexOf(this.currSlideId) > -1) {
    $('.accolades').addClass('current');
} else {
    $('.accolades').removeClass('current');
}
Run Code Online (Sandbox Code Playgroud)

上述功能适用于 IE9+,对于较旧的浏览器,您可以使用PolyFilljQuery.inArray(value, array )

if (jQuery.inArray(this.currSlideId,[5,6,7,8,9]) > -1){
    $('.accolades').addClass('current');
} else {
    $('.accolades').removeClass('current');
}
Run Code Online (Sandbox Code Playgroud)

您可以使用以下方法进一步改进您的代码 toggleClass()方法

$('.accolades').toggleClass('current', this.currSlideId >= 5 && this.currSlideId <= 9);
Run Code Online (Sandbox Code Playgroud)

完全的

// Track slide number and add class
this.rsInstance().ev.on('rsAfterSlideChange', function() {
    $('.what').toggleClass('current', this.currSlideId === 1);
    $('.why').toggleClass('current', this.currSlideId);
    $('.accolades').toggleClass('current', this.currSlideId >= 5 && this.currSlideId <= 9);
});
Run Code Online (Sandbox Code Playgroud)