Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.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
Jquery 如何根据所选项目向上或向下滑动ul元件_Jquery_Menu_Accordion_Selected - Fatal编程技术网

Jquery 如何根据所选项目向上或向下滑动ul元件

Jquery 如何根据所选项目向上或向下滑动ul元件,jquery,menu,accordion,selected,Jquery,Menu,Accordion,Selected,对于我正在构建的应用程序,我有下面的菜单,我很难应用一些jquery规则来隐藏菜单的子类别 我想做的事情如下: 当我第一次加载页面时,我希望每个类别的子项(child1、child2等)向上滑动(关闭)。通过代码,我跟踪所选项目,因此,如果我加载其他页面,则应根据以下规则生成菜单: 如果我将一个类“selected”应用于(比如)Category1,那么我希望它的子类向下滑动。如果类“selected”应用于子级,那么我希望它的父级ul也被扩展 案例1:应用于类别1的选定类别 <ul>

对于我正在构建的应用程序,我有下面的菜单,我很难应用一些jquery规则来隐藏菜单的子类别

我想做的事情如下:

当我第一次加载页面时,我希望每个类别的子项(child1、child2等)向上滑动(关闭)。通过代码,我跟踪所选项目,因此,如果我加载其他页面,则应根据以下规则生成菜单:

如果我将一个类“selected”应用于(比如)Category1,那么我希望它的子类向下滑动。如果类“selected”应用于子级,那么我希望它的父级ul也被扩展

案例1:应用于类别1的选定类别

<ul>     
<li class="selected has-children first-child">Category1</a>                       
 <ul>
  <li class="first-child">Child1</li>
  <li class=" ">Child2</li>
  <li class=" ">Child3</li>
  <li class=" ">Child4</li>
  <li class=" ">Child5></li>
  <li class=" ">Child6</li>
  <li class="last-child">Child6</li>
 </ul>
</li>
<li class="has-children">Category2</a>
 <ul>
  <li class="first-child">Child1</li>
 </ul>
</li>
<li class="has-children last-child">Category3</a>
 <ul>
  <li class="first-child">Child1</li>
  <li class="last-child">Child2</li>
 </ul>
</li>
</ul>
  • 类别1
    • 孩子1
    • 儿童2
    • 儿童3
    • 儿童4
    • 儿童5>
    • 儿童6
    • 孩子6
  • 类别2
    • 孩子1
  • 类别3
    • 孩子1
    • 孩子2

案例2:应用于child4的选定类(ul应扩展)
  • 类别1
    • 孩子1
    • 儿童2
    • 儿童3
    • Child4
    • 儿童5>
    • 儿童6
    • 孩子6
  • 类别2
    • 孩子1
  • 类别3
    • 孩子1
    • 孩子2

提前谢谢你

你想通过展开/折叠这些菜单进行互动吗?还是只想在pageload上应用此功能一次?如果是第二个,则需要定义类名:

li.parent {
   display:none;
}

li.selected {
   display:block;
}
您需要将此类名应用于所有父元素。选择了类名
的所有父元素将自动显示其子元素。然后,使用这个jQuery:

$(function() {

   $('li.parent li').each(function() {
      var parent = $(this).parent('ul').parent('li');
      if($(this).hasClass('selected') || parent.hasClass('selected')) {
         parent.show();
      }
   });

});

这将循环遍历每个li子元素,并检查它是否选择了类名
。如果是,则显示父菜单。

是否希望通过展开/折叠这些菜单进行交互?还是只想在pageload上应用此功能一次?如果是第二个,则需要定义类名:

li.parent {
   display:none;
}

li.selected {
   display:block;
}
您需要将此类名应用于所有父元素。选择了类名
的所有父元素将自动显示其子元素。然后,使用这个jQuery:

$(function() {

   $('li.parent li').each(function() {
      var parent = $(this).parent('ul').parent('li');
      if($(this).hasClass('selected') || parent.hasClass('selected')) {
         parent.show();
      }
   });

});

这将循环遍历每个li子元素,并检查它是否选择了类名
。如果是,则显示为李家长。

谢谢。我快到了。我已将类li.parent替换为li.has-children,以便更适合我使用的代码。但是,当我将所选的类应用于一个子类时,什么都没有显示。看看这个:谢谢。我快到了。我已将类li.parent替换为li.has-children,以便更适合我使用的代码。但是,当我将所选的类应用于一个子类时,什么都没有显示。看看这里: