javascript - 根据其他元素添加和删除类

标签 javascript jquery html css

所以我有幻灯片轮播(适用于 fullPage.js):

<div id="myContainer">
  <div class="section" data-anchor="skynet">
    <div class="slide one" data-anchor="main">
      Slide 1
    </div>

    <div class="slide two" data-anchor="about_us">
      Slide 2
    </div>

    <div class="slide three" data-anchor="faq">
      Slide 3
    </div>

    <div class="slide four" data-anchor="news">
      Slide 4
    </div>
  </div>
</div>

我有一些带背景的积木

<div class="bg-main" id="bgOne"></div>
<div class="bg-main" id="bgTwo"></div>
<div class="bg-main" id="bgThree"></div>
<div class="bg-main" id="bgFour"></div>

通过将类 active 添加到具有类 .one.two 等的 block 来进行幻灯片交换。 我尝试将类添加到背景取决于事件幻灯片的 block 。例如 - 如果 .slide.two 具有类 .active,则将类添加到 block #bgTwo。 这是我目前的 JS。它不起作用:

<script type="text/javascript">
    $(document).ready(function(){ 
      if ( $('#myContainer .one').hasClass('active') ) {
        $('.bg-main').removeClass('active');
        $('#bgOne').addClass('active'); 
        } else if ( $('#myContainer .two').hasClass('active') )
           {
          $('.bg-main').removeClass('active');
          $('#bgTwo').addClass('active');
        }
      });
    </script>

最佳答案

使用回调 onSlideLeave

演示

$(document).ready(function() {
  $('#fullPage').fullpage({
    onSlideLeave: function(link, secIdx, sldIdx, dir, next) {
      $('.test .bg-main').removeClass('active');
      $('.test .bg-main').eq(next).addClass('active');
    }
  });
});
.slide {
  text-align: center
}

.test {
  position: fixed;
  top: 75%;
  right:calc(50% - 220px);
}

.bg-main {
  height: 30px;
  width: 100px;
  background: grey;
  display:inline-block;
  text-align:center;
  outline:1px solid #fff;
  margin:0;
}

.one,
#bgOne.active {
  background: #fc0;
}

.two,
#bgTwo.active {
  background: #f00;
}

.three,
#bgThree.active {
  background: #0f0;
}

.four,
#bgFour.active {
  background: #00f;
}
<link href='https://cdn.jsdelivr.net/jquery.fullpage/2.9.4/jquery.fullpage.min.css' rel='stylesheet'>

<div id="fullPage">
  <div class="section" data-anchor="skynet">
    <div class="slide one" data-anchor="main">
      Slide 1
    </div>

    <div class="slide two" data-anchor="about_us">
      Slide 2
    </div>

    <div class="slide three" data-anchor="faq">
      Slide 3
    </div>

    <div class="slide four" data-anchor="news">
      Slide 4
    </div>
  </div>
</div>
<div class='test'>
  <div class="bg-main active" id="bgOne">1</div>
  <div class="bg-main" id="bgTwo">2</div>
  <div class="bg-main" id="bgThree">3</div>
  <div class="bg-main" id="bgFour">4</div>
</div>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src='https://cdn.jsdelivr.net/jquery.fullpage/2.9.4/jquery.fullpage.min.js'></script>

关于javascript - 根据其他元素添加和删除类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44738274/

相关文章:

javascript - Vue.js 脚本在 Laravel 5.5 中不执行任何操作

javascript - 在工具提示中显示表格单元格内容(jsfiddle 在实际站点上不起作用)

javascript - 调整大小时更新数据属性

javascript - 如果不包含字符串,则使用 jQuery 在下拉列表中选择空值

javascript - Div 字段未更新

javascript - 如何将功能关联到 google maps api 中的自定义控件?

javascript - 使用 AngularJS,如何仅当值不在数组中时才显示元素?

javascript - LexicalEnviroment 对象和 [[Environment]] 之间的关系

php - 将 PHP 日期格式转换为 jQueryUI Datepicker 日期格式

javascript - Angular JS - ng-repeat 重复旧值