Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.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 层次展开/折叠树中的jquery选择器问题_Javascript_Jquery_Jquery Ui Accordion - Fatal编程技术网

Javascript 层次展开/折叠树中的jquery选择器问题

Javascript 层次展开/折叠树中的jquery选择器问题,javascript,jquery,jquery-ui-accordion,Javascript,Jquery,Jquery Ui Accordion,我正在尝试构建一个屏幕,它将是一个书签的层次列表,按类别分组。可以展开/收缩类别以显示或隐藏该类别的书签。现在我只是在开发UI,第一次使用jquery,我很喜欢它 我使用的方法有点像手风琴,但可以同时打开多个部分,并且可以有多个级别。深手风琴只支持一个级别。对于每个类别,都有一个div,其中包含一个文件夹的图像,它将显示或隐藏DOM中的下一个元素,这将是书签的集合,通常是一个文件夹。例如: 我使用$this.parentsUntil'categoryLine'.next.toggletransi

我正在尝试构建一个屏幕,它将是一个书签的层次列表,按类别分组。可以展开/收缩类别以显示或隐藏该类别的书签。现在我只是在开发UI,第一次使用jquery,我很喜欢它

我使用的方法有点像手风琴,但可以同时打开多个部分,并且可以有多个级别。深手风琴只支持一个级别。对于每个类别,都有一个div,其中包含一个文件夹的图像,它将显示或隐藏DOM中的下一个元素,这将是书签的集合,通常是一个文件夹。例如:

我使用$this.parentsUntil'categoryLine'.next.toggletransitionSpeed选择要关闭的元素;其中用户单击的图像周围的div有一类categoryLine,要显示/隐藏的是该div后面的元素

问题在于最复杂的最深层层次结构部分,一些不应该被隐藏的东西正在被隐藏,并且由于未知的原因再次出现

您可以看到一个工作示例。我已经给出了相关的标记ID,并加入了调试警报,以显示单击的元素的ID以及要打开和关闭的元素查看源代码以查看这一点

单击第四个菜单项的文件夹以取消隐藏该类别。您应该会看到sub 1、sub 2和sub 3出现。 单击第四个菜单项sub 1的文件夹。您应该看到sub 1展开,但sub 2完全消失,包括类别行。这就是我试图解开的谜团。点击sub 1正确表示从类别“d41”切换“u411”,但当u411消失时,所有sub 2也消失。同样,如果单击文件夹展开sub2,sub3将消失。 我愿意再次以完全不同的方式实现它,这是我的第一个jquery实验。我也愿意研究一次只能打开一个类别的解决方案,只要它仍然支持层次结构,而不是像手风琴那样的深层结构

提前感谢。

jQuery将parentsunl描述为:

描述:获取当前匹配元素集中每个元素的祖先,直到但不包括选择器匹配的元素

需要注意的重要部分是,您没有选择.categoryLine。似乎你想把它包括在内。如果改为使用“最近的”,则应该可以使用


作为补充说明,以备将来参考。”“categoryLine”不是选择器。通常,您需要包括.,或元素类型,即div。不过还有更高级的方法。您可能想继续阅读。

事实上,没有。类别行本身不应该消失,否则您无法再次打开它。在categoryLine div之后的元素应该显示和隐藏,这可能是另一个div,或者ul。加载页面时,将显示4个类别行。单击某个类别行的文件夹会打开该类别下一个元素的内容,但该类别行始终保持可见。如果您再次查看该行,我确实有一个。在那里上课。我使用类标识符而不是ID的原因是为了减少设置它的负担。必须在分类行和内容之间构建和匹配ID需要做很多工作。另外,我在at看到的示例也是这样工作的。我同意使用类是正确的。你的方法是对的。但是,您的语法不正确。正确的语法是parentsUntil“.categoryLine”。让jquery知道如何使用该类查找某些内容。使用我的代码,类别不会消失。类别之后的下一个元素将消失,看起来它将是ul。直接从页面中获取代码,并将单行更改为我在上面的工作内容。这是一个测试页面。请原谅那些破碎的图像。我明白你的意思,那是个打字错误。我知道需要点。然而,当我使用完全相同的代码并将点放在那里时,没有打开任何文件夹。调试警报也不起作用。它说从类别“null”切换“null”,所以用点,它找不到父对象。查看除了parentsUntil参数中的点之外,哪个代码是相同的。当我查看您发送URL的示例时,我甚至没有看到对话框,更不用说打开窗口了。
<div class="categoryLine" id="d4">
    <img class="folder"....>
    Fourth Menu Item
</div>
<ul id="u4">
    <li id="l41">
$(this).closest('.categoryLine').next().toggle(transitionSpeed);