javascript - jQuery 选择除自己以外的所有 sibling 和 child

标签 javascript jquery

我想做的是复制一个 Accordion 类型的 jQuery 小部件

我有以下代码:

$('a').on('click', function (e) {
  var active = $(this).parent().next();
  active.toggleClass('active');
  active.siblings().not(active).removeClass('active');
  e.preventDefault();
});

尽管 active.siblings().not(active).removeClass('active');不起作用 我希望它如何做 我基本上希望它选择所有 sibling 的 UL 标签和 sibling 的任何子 UL 标签,但排除事件/当前选择。

我已将此 fiddle 设置为示例 http://jsfiddle.net/7u3pw1hz/

最佳答案

问题是,其他 ul 元素不是兄弟,它们是当前 li 的兄弟 li 元素的子元素

$('a').on('click', function(e) {
  var active = $(this).parent().next();
  active.toggleClass('active');
  active.parent().siblings().children('ul').removeClass('active');
  active.find('ul').removeClass('active');
  e.preventDefault();
});
ul ul.active {
  max-height: 800px;
}
ul ul {
  max-height: 0;
  overflow: hidden;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<ul>
  <li><span><a href="category.html">Shop</a> <i class="icon-expand_more"></i></span>
    <ul class="active">
      <li>
        <span><a href="category.html">Sleeping Bags</a> <i class="icon-expand_more"></i></span>
        <ul class="menu">
          <li><a href="category.html">Medium Sleeping Bags</a></li>
          <li><a href="category.html">Winter Sleeping Bags</a></li>
          <li><a href="category.html">Summer Sleeping Bags</a></li>
        </ul>
      </li>
      <li>
        <span><a href="category.html">Swaddles</a> <i class="icon-expand_more"></i></span>
        <ul class="menu">
          <li><a href="/shop/wraps/fitted-wraps">Fitted Wraps</a></li>
          <li><a href="/shop/wraps/merino-wraps">Merino Wraps</a></li>
          <li><a href="/shop/wraps/muslin-wraps">Muslin Wraps</a></li>
          <li><a href="/shop/wraps/stretch-cotton">Stretch Cotton</a></li>
          <li><a href="/shop/wraps/fitted-wraps">Fitted Wraps</a></li>
          <li><a href="/shop/wraps/merino-wraps">Merino Wraps</a></li>
          <li><a href="/shop/wraps/muslin-wraps">Muslin Wraps</a></li>
          <li><a href="/shop/wraps/stretch-cotton">Stretch Cotton</a></li>
        </ul>
      </li>
      <li>
        <span><a href="category.html">Linen</a> <i class="icon-expand_more"></i></span>
        <ul class="menu">
          <li><a href="/shop/wraps/fitted-wraps">Fitted Wraps</a></li>
          <li><a href="/shop/wraps/merino-wraps">Merino Wraps</a></li>
          <li><a href="/shop/wraps/muslin-wraps">Muslin Wraps</a></li>
          <li><a href="/shop/wraps/stretch-cotton">Stretch Cotton</a></li>
        </ul>
      </li>
      <li>
        <span><a href="category.html">Clothing</a> <i class="icon-expand_more"></i></span>
        <ul class="menu">
          <li><a href="/shop/wraps/fitted-wraps">Fitted Wraps</a></li>
          <li><a href="/shop/wraps/merino-wraps">Merino Wraps</a></li>
          <li><a href="/shop/wraps/muslin-wraps">Muslin Wraps</a></li>
          <li><a href="/shop/wraps/stretch-cotton">Stretch Cotton</a></li>
        </ul>
      </li>
      <li>
        <span><a href="category.html">My Room</a> <i class="icon-expand_more"></i></span>
        <ul class="menu">
          <li><a href="/shop/wraps/fitted-wraps">Fitted Wraps</a></li>
          <li><a href="/shop/wraps/merino-wraps">Merino Wraps</a></li>
          <li><a href="/shop/wraps/muslin-wraps">Muslin Wraps</a></li>
          <li><a href="/shop/wraps/stretch-cotton">Stretch Cotton</a></li>
        </ul>
      </li>
      <li>
        <span><a href="category.html">Tool Box</a> <i class="icon-expand_more"></i></span>
        <ul class="menu">
          <li><a href="/shop/wraps/fitted-wraps">Fitted Wraps</a></li>
          <li><a href="/shop/wraps/merino-wraps">Merino Wraps</a></li>
          <li><a href="/shop/wraps/muslin-wraps">Muslin Wraps</a></li>
          <li><a href="/shop/wraps/stretch-cotton">Stretch Cotton</a></li>
        </ul>
      </li>
      <li>
        <span><a href="category.html">Wellbeing</a> <i class="icon-expand_more"></i></span>
        <ul class="menu">
          <li><a href="/shop/wraps/fitted-wraps">Fitted Wraps</a></li>
          <li><a href="/shop/wraps/merino-wraps">Merino Wraps</a></li>
          <li><a href="/shop/wraps/muslin-wraps">Muslin Wraps</a></li>
          <li><a href="/shop/wraps/stretch-cotton">Stretch Cotton</a></li>
        </ul>
      </li>
      <li>
        <span><a href="category.html">Feed</a> <i class="icon-expand_more"></i></span>
        <ul class="menu">
          <li><a href="/shop/wraps/fitted-wraps">Fitted Wraps</a></li>
          <li><a href="/shop/wraps/merino-wraps">Merino Wraps</a></li>
          <li><a href="/shop/wraps/muslin-wraps">Muslin Wraps</a></li>
          <li><a href="/shop/wraps/stretch-cotton">Stretch Cotton</a></li>
        </ul>
      </li>
      <li>
        <span><a href="category.html">Bath</a> <i class="icon-expand_more"></i></span>
        <ul class="menu">
          <li><a href="/shop/wraps/fitted-wraps">Fitted Wraps</a></li>
          <li><a href="/shop/wraps/merino-wraps">Merino Wraps</a></li>
          <li><a href="/shop/wraps/muslin-wraps">Muslin Wraps</a></li>
          <li><a href="/shop/wraps/stretch-cotton">Stretch Cotton</a></li>
        </ul>
      </li>
      <li>
        <span><a href="category.html">Carriers</a> <i class="icon-expand_more"></i></span>
        <ul class="menu">
          <li><a href="/shop/wraps/fitted-wraps">Fitted Wraps</a></li>
          <li><a href="/shop/wraps/merino-wraps">Merino Wraps</a></li>
          <li><a href="/shop/wraps/muslin-wraps">Muslin Wraps</a></li>
          <li><a href="/shop/wraps/stretch-cotton">Stretch Cotton</a></li>
        </ul>
      </li>
      <li>
        <span><a href="category.html">Gifts</a> <i class="icon-expand_more"></i></span>
        <ul class="menu">
          <li><a href="/shop/wraps/fitted-wraps">Fitted Wraps</a></li>
          <li><a href="/shop/wraps/merino-wraps">Merino Wraps</a></li>
          <li><a href="/shop/wraps/muslin-wraps">Muslin Wraps</a></li>
          <li><a href="/shop/wraps/stretch-cotton">Stretch Cotton</a></li>
        </ul>
      </li>
    </ul>
  </li>
  <li><span><a href="category.html">Brands</a></span></li>
</ul>

关于javascript - jQuery 选择除自己以外的所有 sibling 和 child ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31130023/

相关文章:

javascript - 奇怪的错误: code get executed more than once per click

javascript - jQuery this.remove() -vs.- $ ('#id' .remove() 在 Internet Explorer (IE 9+)

java - 使用 AJAX 和 Spring Boot 从磁盘删除文件

带有 jQ​​uery 的 JavaScript 语法

javascript - Rails 4 - 不包含 js 或图像的 heroku 生产版本

javascript - ES6 类方法在 forEach 循环内不返回任何内容

javascript - 每次以不同的入口点运行 Webpack,但仍然使用配置文件?

javascript - 如何更改大型可拖动元素的内容以使其更容易放下?

javascript - 如何在使用 Primefaces 的 Gmap 中准备好 map 后运行 js 函数?

jquery悬停问题