Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何保存嵌套的JqueryUI accordian的状态并稍后通过阅读重新打开它_Javascript_Jquery_Jquery Ui_Jquery Ui Accordion - Fatal编程技术网

Javascript 如何保存嵌套的JqueryUI accordian的状态并稍后通过阅读重新打开它

Javascript 如何保存嵌套的JqueryUI accordian的状态并稍后通过阅读重新打开它,javascript,jquery,jquery-ui,jquery-ui-accordion,Javascript,Jquery,Jquery Ui,Jquery Ui Accordion,嗨,我正在处理一个非常嵌套的手风琴。我想做的是,每当用户更改手风琴的状态时,我想在URL中记录该更改,以便在刷新时可以读取URL并创建具有相同状态的新手风琴。 我已经知道$.selector.accordion选项是活动的,但它的一切都让我困惑 首先,我应该选择什么作为.selector,因为我最初使用div.folder作为选择器来创建手风琴,但我认为jQueryUI在内部使用它,并且在检查html页面时它不会显示在屏幕上。这就是我制作手风琴的方法 $("div.folder").accord

嗨,我正在处理一个非常嵌套的手风琴。我想做的是,每当用户更改手风琴的状态时,我想在URL中记录该更改,以便在刷新时可以读取URL并创建具有相同状态的新手风琴。 我已经知道$.selector.accordion选项是活动的,但它的一切都让我困惑

首先,我应该选择什么作为.selector,因为我最初使用div.folder作为选择器来创建手风琴,但我认为jQueryUI在内部使用它,并且在检查html页面时它不会显示在屏幕上。这就是我制作手风琴的方法

$("div.folder").accordion({collapsible: true, active :false, heightStyle: "content" , activate: function( event, ui ) { console.log($( "#accordion" )
                .accordion( "option", "active" ))}});
第二,当它工作时,它会返回什么?一个数字?它有整个树的状态吗? 第三,当我有状态时,我如何告诉jqueryUI根据特定状态重新创建手风琴? 最后,我不知道这是否会导致一个大问题,但我有两个手风琴一起工作,因为这里是一个代码片段

    //uses Jquery UI to turn the file system into a collapsible menu
    $("div.folder").accordion({collapsible: true, active :false, heightStyle: "content" , activate: function( event, ui ) { console.log($( "#accordion" )
                .accordion( "option", "active" ))}});
    $("div.file").accordion({collapsible: true, active :false, heightStyle: "content",  activate: function( event, ui ) {console.log($( "#accordion" )
                .accordion( "option", "active" ))}});

这会在查询状态时导致问题吗?我不能完全确定我是在处理一个还是两个手风琴。

好的,经过多次尝试和错误,我终于让它工作了。我发现在网上做研究没有什么太有用的,所以我想我会尽力帮助那些可能遇到这个问题的人。我将要分享的内容涉及我的具体实现,它可能不适用于其他实现,因此我将尽可能多地尝试并澄清我的实现

首先,问题是我需要一个嵌套的jQueryUI。我这样做的方式是让所有目标标记都属于同一个类。当我调用.accordion方法时,我在整个课堂上都这样做了。这就是为什么我的情况不同于我在网上遇到的所有情况。由于这种情况,这种大型手风琴几乎就像是一系列小型手风琴。如果我要求

$(.selector).accordion( "option", "active",)
它只会告诉我0,因为在某种意义上,有多个手风琴,它不知道选择哪一个

我偶然发现的解决办法是当我打印时

$( .selector ).accordion({ activate: function( event, ui ) {}})
在屏幕上。我发现jQueryUI将我的大手风琴视为一组单个单元的手风琴。因此,我回到我的代码中,确保每个单元accordion都有自己的唯一id。利用这些信息,我创建了一个事件处理程序,每次我更改accordion时,它都会将打开的迷你accordions的id附加到url,如果它已关闭,则会将其删除

这就是我拯救国家的方式。为了重新打开正确的状态,我读取了url,对其进行了解析,然后对每个唯一的id进行了简单的调用

$( "uniqueID" ).accordion( "option", "active",0 )
这将基本上找到迷你手风琴并打开它。因为这是为所有打开的迷你手风琴做的,你的大手风琴将按照你想要的方式展开

如果有人在读这篇文章,请问任何你需要的问题,如果我记得的话,我会回答