Javascript 如何隐藏父项<;李>;如果所有子项都隐藏在jquery中

Javascript 如何隐藏父项<;李>;如果所有子项都隐藏在jquery中,javascript,jquery,Javascript,Jquery,我是Jquery新手 我的网页结构是这样的 <div id="MenuSection"> <ul> <li>Master // Main Menu <ul> <li>Master1</li> <li>Master2</li> <l

我是Jquery新手

我的网页结构是这样的

 <div id="MenuSection">
    <ul>
       <li>Master                 // Main Menu
           <ul>
               <li>Master1</li>
               <li>Master2</li>
               <li>Master3</li>
           </ul>
       </li>
       <li>Transaction            // Main Menu
           <ul>
               <li>Transaction1</li>
               <li>Transaction2</li>
               <li>Transaction3</li>
           </ul>
       </li>
       <li>Report                 // Main Menu
          <ul>
              <li>Report1</li>
              <li>Report2</li>
              <li>Report3</li>
          </ul>
       </li>
   </ul>
   </div>

  • 主/主菜单
    • 大师1
    • 大师2
    • 大师3
  • 事务//主菜单
    • 交易1
    • 交易2
    • 交易3
  • 报告//主菜单
    • 报告1
    • 报告2
    • 报告3
我希望当任何父项(主菜单)的所有子项都被隐藏时,父项也应该被隐藏。假设Report1、Report2、Report3是隐藏的,那么“Report”的父级也应该是隐藏的


如何通过Jquery实现这一点?

一种方法是迭代每个主菜单
li
,查看其子菜单是否都是:

还有其他方法可以做到这一点,比如使用.filter或.map,但这应该可以满足您的需要

给定嵌套的
ul
,上面使用
确保只处理直接
ul>li
子级。如果您有多个级别,则可能需要相应地更改,例如第一个:
菜单操作li
将应用于所有
li
s,第二个
。find(“>ul>li:visible”)
只查看直接
li
子级

$(“#菜单操作>ul>li”)。每个(函数(){
if($(this).find(“li:visible”).length==0){
$(this.hide();
}
});

  • 主人
    • 大师1
    • 大师2
    • 大师3
  • 交易
    • 交易1
    • 交易2
    • 交易3
  • 报告
    • 报告1
    • 报告2
    • 报告3

一种方法是迭代每个主菜单
li
,查看其子菜单是否都是:

还有其他方法可以做到这一点,比如使用.filter或.map,但这应该可以满足您的需要

给定嵌套的
ul
,上面使用
确保只处理直接
ul>li
子级。如果您有多个级别,则可能需要相应地更改,例如第一个:
菜单操作li
将应用于所有
li
s,第二个
。find(“>ul>li:visible”)
只查看直接
li
子级

$(“#菜单操作>ul>li”)。每个(函数(){
if($(this).find(“li:visible”).length==0){
$(this.hide();
}
});

  • 主人
    • 大师1
    • 大师2
    • 大师3
  • 交易
    • 交易1
    • 交易2
    • 交易3
  • 报告
    • 报告1
    • 报告2
    • 报告3

JavaScript相当容易做到这一点。每次隐藏或显示列表项时,都需要在此基础上展开以在相关列表上执行此检查

function isHidden(array) {
  for(var i = 0; i < array.length - 1; i++) {
    if(array[i+1].style.display != "none") {
        return false;
    };
  };
  return true;
};

var children = document.getElementById("report").getElementsByTagName("LI");
if (isHidden(children)) {
  document.getElementById("report").style.display = "none";
};
函数isHidden(数组){
对于(var i=0;i
JavaScript相当容易做到这一点。每次隐藏或显示列表项时,都需要在此基础上展开以在相关列表上执行此检查

function isHidden(array) {
  for(var i = 0; i < array.length - 1; i++) {
    if(array[i+1].style.display != "none") {
        return false;
    };
  };
  return true;
};

var children = document.getElementById("report").getElementsByTagName("LI");
if (isHidden(children)) {
  document.getElementById("report").style.display = "none";
};
函数isHidden(数组){
对于(var i=0;i
您可以使用

参见代码:

(函数($){
$(文档).ready(函数(){
var$mainLinks=$('#菜单操作>ul>li');
$.each($mainLinks,function(){
if(!$(this.find('li')。是(':visible')){
$(this.hide();
}
});
});
})(jQuery)
#菜单操作>ul>li:最后一个孩子li{
显示:无;
}
#菜单操作>ul>li:第一个孩子li:第一个孩子{
显示:无;
}

  • 主/主菜单
    • 大师1
    • 大师2
    • 大师3
  • 事务//主菜单
    • 交易1
    • 交易2
    • 交易3
  • 报告//主菜单
    • 报告1
    • 报告2
    • 报告3
您可以使用

参见代码:

(函数($){
$(文档).ready(函数(){
var$mainLinks=$('#菜单操作>ul>li');
$.each($mainLinks,function(){
if(!$(this.find('li')。是(':visible')){
$(this.hide();
}
});
});
})(jQuery)
#菜单操作>ul>li:最后一个孩子li{
显示:无;
}
#菜单操作>ul>li:第一个孩子li:第一个孩子{
显示:无;
}

  • 主/主菜单
    • 大师1
    • 大师2
    • 大师3
  • 事务//主菜单