我正在尝试filter-panel--content
刷新站点时显示的div的显示状态(阻止/无显示)。我在那个班上有多个div。该div内有一些复选框,可在更改状态后刷新网站。效果很好,但是当我的网站刷新时,该div保持关闭状态“ display:none”。但是我尝试sessionStorage的显示状态。
这是我的侧边栏的一部分:
<div class="filter-panel filter--property facet--property" data-filter-type="value-list" data-field-name="f">
<div class="filter-panel--flyout" style="border:none;">
<div id="label-it" class="label-it"><label class="filter-panel--title"><h3 class="rums">LED</h3><div id="klapp" class="klapp"></div></label></div>
<div class="filter-panel--content">
[...]
</div>
<div class="filter-panel filter--property facet--property" data-filter-type="value-list" data-field-name="f">
<div class="filter-panel--flyout" style="border:none;">
<div id="label-it" class="label-it"><label class="filter-panel--title"><h3 class="rums">Housing style</h3><div id="klapp" class="klapp"></div></label></div>
<div class="filter-panel--content">
[...]
</div>
单击div的“ label-it”时,将切换div的“ filter-panel--content”,display:none
并且display:block
在“ filter-panel--content”内的某些复选框会刷新站点。
现在,我要存储“ filter-panel--content”的显示属性
这是我获得的第一个解决方案sessionStorage
:
sessionStorage.setItem("filterstate", $(this).closest(".filter-panel--flyout").find(".filter-panel--content div").css("display"));
这是设置的第一个解决方案sessionStorage
,它在切换功能中:
$('.label-it').click(function() {
$(this).find(".filter-panel--title div").toggleClass('klapp klappe');
$(this).closest(".filter-panel--flyout").find(".filter-panel--content div").toggle(350)
sessionStorage.setItem("filterstate", $(this).closest(".filter-panel--flyout").find(".filter-panel--content div").css("display"));
});
我需要协助 :)
第二次尝试:很localStorage
遗憾,我尝试实现了无效。.我需要一些帮助。
组:
$('.label-it').click(function() {
$(this).find(".filter-panel--title div").toggleClass('klapp klappe');
$(this).closest(".filter-panel--flyout").find(".filter-panel--content div").toggle(350)
var panel = $(this).closest(".filter-panel--flyout").find(".filter-panel--content div");
if ( panel.style.display === "block") {
localStorage.setItem("isOpen", true);
} else {
localStorage.setItem("isOpen", false);
}
});
得到:
$(document).ready(function() {
var isOpen = localStorage.getItem("isOpen");
if (isOpen === "true") {
$(this).closest(".filter-panel--flyout").find(".filter-panel--content div").css('display', 'block');
} else {
$(this).closest(".filter-panel--flyout").find(".filter-panel--content div").css('display', 'none');
}
});
将sessionStorage.setItem("filterstate", $(this).closest(".filter-panel--flyout").find(".filter-panel--content div").css("display"));
您filterstate
的display
值设置为block
或none
。
这本身无法做您想做的。您必须知道要设置为此保存显示状态的夹心元素。
为此,您最好
id="[...]"
为每个要使用的面板设置一个唯一的名称,并将选定的ID设置到存储中。然后,您可以检查sessionStorage
ID,搜索DOM
其元素并进行切换。
此外,您getting
的设置。要获得某些东西,您必须在示例中使用sessionStorage.getItem('filterstate');
例如:
组: sessionStorage.setItem("filterstate", $(this).closest(".filter-panel--flyout").find(".filter-panel--content div").attr('id'));
得到: $('#' + sessionStorage.setItem('filterstate').css('display', 'block');
如您所说,您不能设置唯一的ID。这是一个使用jQuerys .index()的示例:
sessionStorage.setItem("filterstate", $(this).parent().index(this);
$('[ ... Parent ... ]').eq(sessionStorage.setItem('filterstate')).css('display', 'block');
(未测试)
请注意评论以了解更多信息:
$('.clickable').click(function() {
var panel = $(this).closest(".wrapper").find(".childToShow"); // get panel
panel.toggle(350, 'swing', function() { // toggle panel and execute function !!!after!!! toggle
var storage = localStorage.getItem('indexes'); // get localStorage
var index = $(this).parent().index(); // get index of childWrapper (parent of .clickable and .childToShow)
if ($(panel).css('display') === "block") { // check if panel is showen
storage = storage ? storage + ';' + index : index; // if panel is showen !!!add!!! its .wrappers index to the localStorage
// you should not overwirte the storage with the index, becaus more than one panel could be open at the same time.
} else { //if panel is closed remove index from localStorage
var newStorage = ''; // initialize new string for localStorage
var storageArr = storage.split(';'); // split actual storage string into an array
storageArr.splice(storageArr.indexOf(index), 1); // remove from storage array
for (var i = 0; i < storageArr.length; i++) {
newStorage = i === 0 ? newStorage + storageArr[i] : newStorage + ';' + storageArr[i]; // build new storage string
}
storage = newStorage; // set storage variable to the new one
}
localStorage.setItem('indexes', storage); // write into storage
});
});
$(document).ready(function() {
console.log('Your "indexes" storage looks like: ', localStorage.getItem("active2"))
var storage = localStorage.getItem("indexes") // get localStorage
if (storage) { // check if storage is not empty
storage = localStorage.getItem("indexes").split(';'); // get storage array
for (var i = 0; i < storage.length; i++) {
$('.wrapper').eq(storage[i]).find(".childToShow").css('display', 'block'); // show each saved wrappers (its index is in the storage) .childToShow
}
}
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句