Я бы просто переключил класс CSS на родительский элемент и использовал бы стиль, чтобы показать и скрыть элемент. Не нужно беспокоиться о вызове функции при обновлении страницы. Это просто применяется.
$('#switch').on('change', function() {
$(".wrapper").toggleClass("show-footer", this.checked)
}).change();
var i = 4;
window.setInterval(function() {
i++
$(".wrapper").append(`<div>${i}</div><div class="footer-inner">${i}X</div>`)
}, 2000)
.wrapper .footer-inner {
display: none;
}
.wrapper.show-footer .footer-inner {
display: block;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="checkbox" id="switch"><label>Toggle</label>
<div class="wrapper">
<div>1</div>
<div class="footer-inner">1X</div>
<div>2</div>
<div class="footer-inner">2X</div>
<div>3</div>
<div class="footer-inner">3X</div>
<div>4</div>
<div class="footer-inner">4X</div>
По-вашему, переключая видимость, вам нужно будет вызвать функцию после обновления страницы. Поэтому вам нужно будет позвонить $('#switch').click()
, когда вы сделаете обновление.
И, в зависимости от макета, можно сделать это в чистом виде CSS, используя состояние флажка.
var i = 4;
window.setInterval(function() {
i++
$(".wrapper").append(`<div>${i}</div><div class="footer-inner">${i}X</div>`)
}, 2000)
.wrapper .footer-inner {
display: none;
}
#switch:checked + label + .wrapper .footer-inner {
display: block;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="checkbox" id="switch"><label>Toggle</label>
<div class="wrapper">
<div>1</div>
<div class="footer-inner">1X</div>
<div>2</div>
<div class="footer-inner">2X</div>
<div>3</div>
<div class="footer-inner">3X</div>
<div>4</div>
<div class="footer-inner">4X</div>