Запустите эту функцию один раз

У меня есть сайт, у которого есть вступление, занимающее весь видовой экран, с навигационным меню прямо под ним.

Я пытаюсь создать функцию, которая скрывает этот вводный элемент, когда вы прокручиваете его. Мне также нужна функция, чтобы прокрутить ваш браузер до самого верха, так как этот div скрыт.


Я сделал такую ​​функцию, но она создает проблему:

Часть функции, которая заставляет прокрутить вверх, продолжает работать, не позволяя вам прокручивать div, который я использую в качестве якоря. Я пробовал несколько разных решений, чтобы заставить функцию срабатывать только один раз за сеанс, но я не мог заставить ее работать.

Я спрашиваю, как я могу сделать это только один раз? Или я должен попробовать другой подход? .postfold_container_01 это контейнер навигационного меню прямо под .prefold_wrapper Div Я пытаюсь скрыть.

$(window).scroll(function() {    
    var scroll = $(window).scrollTop();    
    if (scroll >= $(".postfold_container_01").offset().top) {
        $(".prefold_wrapper").addClass("hide");
        window.scrollTo(0, 0);
    } else {

    }
});

2 ответа

Решение

Вы можете попробовать использовать enclosure, чтобы предоставить вашей функции логическое значение "done", а затем использовать его в операторе if. Как это:

  var hideAndScrollOnce = (function () {
    var done = false;
    return function () {
      var scroll = $(window).scrollTop();
      if (scroll >= $(".postfold_container_01").offset().top && !done) {
          $(".prefold_wrapper").addClass("hide");
          window.scrollTo(0, 0);
          done = true;
      }
    }  
  })();
  $(window).scroll(hideAndScrollOnce);

Вы можете попробовать просто изменить свое состояние на что-то вроде:if (scroll >= $(".postfold_container_01").offset().top && !$(".prefold_wrapper").hasClass("hide")) {

Другие вопросы по тегам