我正在使用以下 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)
为什么不简单?
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+,对于较旧的浏览器,您可以使用PolyFill或jQuery.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)