从localStorage变量激活手风琴集

Accordion set active from localStorage variable

本文关键字:手风琴 激活 变量 localStorage      更新时间:2023-09-26

我有一个jQuery UI手风琴,我需要记住它的状态(最后打开的是哪个标头)。

这是我的挥杆:

var storedActive = localStorage.getItem("storedActive");
if (isNaN(storedActive)){
    storedActive = false;
}
console.log(storedActive);
jQuery('#accordion').accordion({
    heightStyle: "content",
    collapsible: true,
    header: 'h4',
    active: storedActive,
    activate: function(event, ui){
        if(ui.newHeader.context){
            storedActive = ui.newHeader.context.id.slice(-1); //getting id of clicked header
        }else{
            storedActive = false;
        }
        localStorage.setItem("storedActive", storedActive);
    }
});

第5行中的这个console.log(storedActive)证明了上次点击的标题的值被正确地记住并重新存储。问题是手风琴没有打开任何一个头部。

奇怪的是,当我手动设置值storedActive时,accordon会按原样打开标题。它只是在从localStorage恢复值时出现了一些问题。

从localStorage获取变量时,我忘记使用parseInt。现在一切正常。谢谢!

var storedActive = parseInt(localStorage.getItem("storedActive"));
if (isNaN(storedActive)){
    storedActive = false;
}
console.log(storedActive);
jQuery('#accordion').accordion({
    heightStyle: "content",
    collapsible: true,
    header: 'h4',
    active: storedActive,
    activate: function(event, ui){
        if(ui.newHeader.context){
            storedActive = ui.newHeader.context.id.slice(-1); //getting id of clicked header
        }else{
            storedActive = false;
        }
        localStorage.setItem("storedActive", storedActive);
    }
});

我使用这个:

$( ".accordion" ).accordion({
    activate: function(event, ui) {        
        localStorage.setItem("AccordionId", $(this).accordion("option", "active"))
    },
    active: parseInt(localStorage.getItem("AccordionId"))
}

如果您的页面中有多个手风琴,请将"AccordionId"替换为此手风琴的唯一id。

它也适用于Jquery选项卡