我有這樣的HTML內容:如何在重新加載頁面時保持複選框被選中並顯示內容?
<div class="myClass" style="display:none">
<table class="table table-hover">
.....
</table>
</div>
正如你可以看到這是一個表,該表隱藏
我有一個checkbox
表明這一點,如果選中該複選框
<label class="switch">
<input type="checkbox" id="test" onclick="toggle('.myClass', this)" autocomplete="on" ></legend>
<div class="slider round"></div>
</label>
<script language="JavaScript">
function toggle(className, obj) {
var $input = $(obj);
if ($input.prop('checked')) $(className).show(1000);
else $(className).hide(1000);
}
</script>
正如你可以看到如果複選框被選中,它將被顯示,如果它未被選中,它會隱藏我的div
一切都很好。
現在,如果我重新加載此頁我要保留選中的複選框,如果它被選中,或者如果它是未選中我這樣說:
<script>
$(function(){
var test = localStorage.input === 'true'? true: false;
$('input').prop('checked', test || false);
});
$('input').on('change', function() {
localStorage.input = $(this).is(':checked');
if ($(this).prop('checked')) {
$(className).show(1000); //checked
}
console.log($(this).is(':checked'));
});
</script>
現在我的問題是
時我重新加載頁面,如果複選框被選中,它不顯示內容....所以我必須取消選中它,並再次檢查它使其工作。
如果選中該複選框,是否有可能重新加載頁面並顯示我的內容?
編輯
感謝@nnnnnn作爲回答之前,我得到這個工作:
<label class="switch">
<input type="checkbox" id="test" ></legend>
<div class="slider round"></div>
</label>
<div class="myClass" style="display:none">
<table class="table table-hover">
...
</table>
<script>
$(function(){
$('#test')
.prop('checked', localStorage.input === 'true')
.on('click', function() {
localStorage.input = this.checked;
if (this.checked) {
$('.myClass').show(1000); //checked
} else {
$('.myClass').hide(1000);
}
})
.trigger('change');
});
</script>
嘿!非常感謝你的回答,在嘗試你的代碼後,如果我有它檢查我重新加載頁面,並更改爲未選中,如果我再次重新加載頁面更改檢查和顯示的內容,如我所料,但我真正需要的是如果我有檢查我和頁面需要重新加載它必須檢查並顯示我的內容。我剛剛編輯了我的問題,我添加了你的代碼! – User100696
噢,對不起,這是因爲'.trigger('click')'改變了檢查狀態,就像用戶點擊框一樣。如果使用「change」事件,那不會發生,對不起。我會更新我的答案,只是使用''change'' - 我認爲我的推薦使用''click''現在可能已經過時了(它只適用於較老的IE,當通過鍵盤「點擊」框時,所以...)。 – nnnnnn
完美!萬分感謝! – User100696