簡體   English   中英

通過JS刪除X類時添加類

[英]Add class when X class is been removed via JS

我正在嘗試使用JS刪除另一個類時將一個類添加到div中。

這是我的HTML:

<body class="homepage">

<div id="wrap">

    <div id="projects">
      <section id="project-0" class="slide active"> Slide 1</section>
      <section id="project-1" class="slide active"> Slide 2</section>
      <section id="project-2" class="slide active"> Slide 3</section>
    </div>
</div>
<div class="content"> Website main content </div>

這是一張垂直的幻燈片,因此當您向下滾動時,將使用JS刪除active類。 我想實現的是從project-2刪除active對象后,向body添加一個類。

到目前為止,這就是我所擁有的,但是它不能識別active類,因為它是通過JS添加的。

if(!$("#project-2").hasClass("active")){
    $("body").addClass("shifted");
 }

JS:

var delta = 0;
var currentSlideIndex = 0;
var scrollThreshold = 30;
var slides = $(".slide");
var numSlides = slides.length;
function elementScroll (e) {
  console.log (Math.abs(delta));
  // --- Scrolling up ---
  if (e.originalEvent.detail < 0 || e.originalEvent.wheelDelta > 0) { 

    delta--;

    if ( Math.abs(delta) >= scrollThreshold) {
    prevSlide();
    }
  }

  // --- Scrolling down ---
  else {

    delta++;

    if (delta >= scrollThreshold) {
      nextSlide();
    }
  }

  // Prevent page from scrolling
  return false;
}


function showSlide() {

  // reset
  delta = 0;

  slides.each(function(i, slide) {
    $(slide).toggleClass('active', (i >= currentSlideIndex));
  });

}


function prevSlide() {

  currentSlideIndex--;

  if (currentSlideIndex < 0) {
    currentSlideIndex = 0;
  }

  showSlide();
}

function nextSlide() {

  currentSlideIndex++;

  if (currentSlideIndex > numSlides) { 
    currentSlideIndex = numSlides;
  }

  showSlide();
}

$(window).on({
  'DOMMouseScroll mousewheel': elementScroll
});

您可以在這里看到它的工作原理

通過查看您的JS代碼,我相信您想在向下滾動的同時向body添加class 您可以嘗試以下代碼:

function prevSlide() {

    currentSlideIndex--;

    if(currentSlideIndex == (numSlides-1))
    {
        $("body").removeClass("shifted"); // remove the class from body
    }
    if (currentSlideIndex < 0) {
        currentSlideIndex = 0;
    }

    showSlide();
}

function nextSlide() {

    currentSlideIndex++;

    if (currentSlideIndex > numSlides) { 
        currentSlideIndex = numSlides;

        $("body").addClass("shifted"); // add the class to body

    }

    showSlide();
}

您檢查該班級是否缺席的操作僅啟動一次。 您必須間隔100毫秒或任意間隔來執行此操作:

setInterval(function()
{
    if (!$("#project-2").hasClass("active")){
        $("body").addClass("shifted");
    }
}, 100);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM