Запустите эту функцию один раз
У меня есть сайт, у которого есть вступление, занимающее весь видовой экран, с навигационным меню прямо под ним.
Я пытаюсь создать функцию, которая скрывает этот вводный элемент, когда вы прокручиваете его. Мне также нужна функция, чтобы прокрутить ваш браузер до самого верха, так как этот 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")) {