设置 HTML 中的属性后,滑动滑块将 class 添加到活动幻灯片

Swiper slider add class to active slide when attribute in HTML is set

我想在活动幻灯片设置属性时将 class 添加到导航栏,例如 "navbar-dark"。我尝试使用 class 但我的功能并不完美。当我更改幻灯片时,class 添加到第二张幻灯片而不是第一张幻灯片。

$(document).ready(function () {
    var mySwiper = new Swiper('.swiper-container', {
        direction: 'horizontal',
        loop: false,
        mousewheel: {
            invert: false,
        },
    });
    mySwiper.on('slideChange', function (realIndex) {
        if ($('.swiper-slide.swiper-slide-active').hasClass('dark')) {
            $('#navbar').addClass('darknav')
        } else {
            $('#navbar').removeClass('darknav');
        }
    });
});

我用谷歌搜索 "swiper jQuery plugin",打开第一个建议页面并转到 the API。 还有 Events section,还有 .on init 方法。试试看

jQuery(function($) {

  function darkNav() {
    //if ( $('.swiper-slide.swiper-slide-active').hasClass('dark') ) { // `this` rather?
    if ( $(this).find('.swiper-slide-active').hasClass('dark') ) {
      $('#navbar').addClass('darknav')
    } else {
      $('#navbar').removeClass('darknav');
    }
  }

  var mySwiper = new Swiper('.swiper-container', {
    direction: 'horizontal',
    loop: false,
    mousewheel: {
      invert: false,
    },
    on: {
      init: darkNav,          // do also on init
      slideChange: darkNav    // is this needed?
    }
  });

});

此外,您可以尝试使用 $(this).find('.swiper-slide-active').hasClass('dark')

而不是 $('.swiper-slide.swiper-slide-active').hasClass('dark')