jQuery 显示具有特定类的子元素

标签 jquery css hide show

我想隐藏所有没有 .active 类的元素。我当前使用的代码似乎无法正常工作。

JSFIDDLE

HTML

<ul class="list">
        <li><a href="#">Menu Item 1</a>
          <ul>
            <li><a href="#">Menu Item 1.1</a></li>
            <li><a href="#">Menu Item 1.2</a></li>
            <li><a href="#">Menu Item 1.3</a></li>
          </ul>
        </li>
        <li class="active"><a href="#" class="active">Menu Item 2
          </a>
          <ul>
            <li><a href="#">Menu Item 2.1</a></li>
            <li><a href="#" class="active">Menu Item 2.2
              </a>
              <ul>
                <li><a href="#">Menu Item 2.2.1</a></li>
                <li><a href="#">Menu Item 2.2.2</a></li>
                <li><a href="#" class="active">Menu Item 2.2.3</a></li>
              </ul>
            </li>
            <li><a href="#">Menu Item 2.3</a></li>
        </ul>
      </li>
        <li><a href="#">Menu Item 3</a></li>
        <li><a href="#">Menu Item 4</a></li>
    </ul>

CSS

.list li { display: none; }

jQuery

$( document ).ready( function( ) {

    $(".menu > li").has(".active").show;

});

最佳答案

你有一些错别字:

  1. 您没有使用 .list,而是使用了 .menu
  2. 您使用了 .show 而不是使用 .show()

除此之外,我认为您可以使 jQuery 更简单一些:

$(function() {
  $(".list > li.active").show();
});

$(function() { ... })$(document).ready(function() { ... }} 完全相同,我直接选择了 .active 类的 li 元素,而不是先选择 li 元素,然后再检查它们是否有类.active.

如果您希望显示整个菜单结构(例如 Menu 2Menu 2.2Menu 2.2.3,您需要更改.list > li.active.list li.active。然而,这也意味着将 .active 类移动到 li 而不是子菜单的 a 标签。

另一种选择是为此使用 CSS 而不是 jQuery(尽管您可能会使用 jQuery 来实现行为)。只需使用 .list li.active { display: list-item; 以显示菜单 2

$(function() {
  $(".list > li.active").show();
});
.list li {
  display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="list">
  <li><a href="#">Menu Item 1</a>
    <ul>
      <li><a href="#">Menu Item 1.1</a>
      </li>
      <li><a href="#">Menu Item 1.2</a>
      </li>
      <li><a href="#">Menu Item 1.3</a>
      </li>
    </ul>
  </li>
  <li class="active"><a href="#" class="active">Menu Item 2
          </a>
    <ul>
      <li><a href="#">Menu Item 2.1</a>
      </li>
      <li><a href="#" class="active">Menu Item 2.2
              </a>
        <ul>
          <li><a href="#">Menu Item 2.2.1</a>
          </li>
          <li><a href="#">Menu Item 2.2.2</a>
          </li>
          <li><a href="#" class="active">Menu Item 2.2.3</a>
          </li>
        </ul>
      </li>
      <li><a href="#">Menu Item 2.3</a>
      </li>
    </ul>
  </li>
  <li><a href="#">Menu Item 3</a>
  </li>
  <li><a href="#">Menu Item 4</a>
  </li>
</ul>

关于jQuery 显示具有特定类的子元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27754409/

相关文章:

javascript - 从网站打印内容时,如何隐藏显示在文件底部的 URL 地址?

javascript - jQuery 瘦身包 fadeIn

jquery - 为一种功能提供更多效果。 jQuery

javascript - 无法并排显示选择的字段?

javascript - 单击按钮时将 <p> 更改为输入值

html - 页脚不是父 Div 的宽度

php - 将 HTML 页面转换为 JPG

python - 有没有办法在 Python 中更改有效的进程名称?

jquery - 如何预先选择jquery移动输入按钮?

javascript - 如何更改调查中问题的顺序?