Я использую плагин Bootstrap's Buttons Переключить состояние в пользовательском флажке. Когда эта кнопка переключена (включена), скрытый элемент должен появиться в верхней части страницы, а затем страница должна прокрутиться до верхней части. При следующем переключении кнопки (выкл.) Элемент должен исчезнуть, а страница прокрутиться до самого верха.
Скрытый элемент переключается, когда кнопка включается и выключается, но прокрутка не работает.
Изменение переключателя данных с «кнопок» на «кнопку» приводит к тому, что прокрутка работает, но визуально не переключает кнопку, так что это бесполезно.
Я попытался установить событие onchange для самого флажка, но он также не прокручивается.
Кажется, что функция Bootstrap для события onclick делает что-то, что не позволяет моей функции onclick работать должным образом. До сих пор я не пытался понять это (я буду продолжать пытаться).
Установка таймаута для функции window.scrollTo () заставляет его работать. Почему это может быть? Есть ли способ сделать это без таймаута?
<body>
<div class="container">
<div>
<h3>Toggle Header and Scroll To Top</h3><hr />
<h1 id="displayMe" class="d-none">Display Me</h1>
<div style="height: 100vh;"></div>
<div class="btn-group-toggle btn btn-success custom-control custom-switch" data-toggle="buttons" id="myButton">
<input type="checkbox" class="custom-control-input" id="myCheckbox">
<label class="custom-control-label" for="myCheckbox">Toggle and Scroll</label>
</div>
</div>
</div>
<script src="assets/jquery/jquery.min.js"></script>
<script src="assets/twitter-bootstrap/js/bootstrap.min.js"></script>
<script>
$(document).ready(function () {
$("#myButton").on("click", toggleAndScroll);
});
function toggleAndScroll() {
$('#displayMe').toggleClass('d-none');
//setTimeout(function () {
window.scrollTo(0, 0);
//}, 100);
}
</script>
</body>
https://jsfiddle.net/ews9q50v/
(Раскомментируйте строки setTimeout, чтобы увидеть, как он работает)