我在表單頁面上使用引導手風琴。用戶可以同時打開多個面板。提交表格後,我想保留已打開的任何Bootstrap手風琴面板的狀態。Bootstrap手風琴。保留頁面加載多個面板的狀態
我已經修改一些代碼,我在堆棧溢出發現做到這一點使用本地存儲,如下:
Accordion HTML
-------------------
<div class="panel-group" id="accordion">
<div class="panel panel-default">
<div class="panel-heading">
<div class="panel-title"> <a data-toggle="collapse" href="#client_12325">Panel heading</a> </div>
</div>
<div id="client_12325" class="panel-collapse collapse">
<div class="panel-body">Panel Content</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<div class="panel-title"> <a data-toggle="collapse" href="#client_12326">Panel heading</a> </div>
</div>
<div id="client_12326" class="panel-collapse collapse">
<div class="panel-body">Panel Content</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<div class="panel-title"> <a data-toggle="collapse" href="#client_12327">Panel heading</a> </div>
</div>
<div id="client_12327" class="panel-collapse collapse">
<div class="panel-body">Panel Content</div>
</div>
</div>
</div>
Javascript
---------------
<script>
$(document).ready(function() {
var retainState = [];
localStorage.setItem('retainState', JSON.stringify(retainState));
$('#accordion').on('shown.bs.collapse', '.panel-collapse', function() {
retainState = JSON.parse(localStorage.getItem('retainState'));
if ($.inArray($(this).attr('id'), retainState) == -1) {
retainState.push($(this).attr('id'));
};
localStorage.setItem('retainState', JSON.stringify(retainState));
});
$('#accordion').on('hidden.bs.collapse', '.panel-collapse', function() {
retainState = JSON.parse(localStorage.getItem('retainState'));
retainState.splice($.inArray($(this).attr('id'), retainState), 1 ); //remove item from array
localStorage.setItem('retainState', JSON.stringify(retainState));
});
});
var retainStateArray = JSON.parse(localStorage.getItem('retainState'));
var arrayLength = retainStateArray.length;
for (var i = 0; i < arrayLength; i++) {
var panel = '#'+retainStateArray[i];
$(panel).addClass('in');
console.log(panel);
}
</script>
有2個問題與此代碼
1 /它得到正確的ID頁面刷新上的面板(可以通過循環內的控制檯日誌查看),但是無法將類'in'添加到面板。
2 /它只保留第一頁重新加載的狀態。無論頁面重新加載多少次,我都希望它保留整個用戶會話的狀態。
在此先感謝。
謝謝。這就是我最終做的 – ratherBeKiting