javascript - jQuery - .on ("click") 隐藏每个 sibling

标签 javascript jquery

我在隐藏单击的对象旁边的每个同级对象时遇到了一些麻烦。 简单的 $(".hider").hide(); 对我不起作用,因为我有多个对象,我只想隐藏单击的一个对象旁边的那些 sibling ,其他对象需要获取hider 类,这样用户就无法再次与其交互。

$(document).on('click', '.hider', function() {
  console.log("clicked");
  var obj = $(this);
  obj.parent("ul").children("span.hider").each(function() {
    $(this).removeClass("hider");
    console.log($(this));
  });
});
.c-pointer {
  cursor: pointer;
}
li a span {
  color: red
}
li a span.hider {
  color: #000
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="emoticon">
  <div class="sb-social">
    <ul class="c-default">
      <!-- -->
      <li class="enabled">
        <a class="c-pointer">
          <span class="hider">Click on me to hide All</span>
        </a>
      </li>
      <!-- -->
      <li class="enabled">
        <a class="c-pointer">
          <span class="hider">Click on me to hide All</span>
        </a>
      </li>
      <!-- -->
      <li class="enabled">
        <a class="c-pointer">
          <span class="hider">Click on me to hide All</span>
        </a>
      </li>
      <!-- -->
      <li class="enabled">
        <a class="c-pointer">
          <span class="hider">Click on me to hide All</span>
        </a>
      </li>
      <!-- -->
      <li class="enabled">
        <a class="c-pointer">
          <span class="hider">Click on me to hide All</span>
        </a>
      </li>
      <!-- -->
    </ul>
  </div>
</div>
<!-- -->
<hr/>
<!-- -->
<div class="emoticon">
  <div class="sb-social">
    <ul class="c-default">
      <!-- -->
      <li class="enabled">
        <a class="c-pointer">
          <span class="hider">Click on me to hide All</span>
        </a>
      </li>
      <!-- -->
      <li class="enabled">
        <a class="c-pointer">
          <span class="hider">Click on me to hide All</span>
        </a>
      </li>
      <!-- -->
      <li class="enabled">
        <a class="c-pointer">
          <span class="hider">Click on me to hide All</span>
        </a>
      </li>
      <!-- -->
      <li class="enabled">
        <a class="c-pointer">
          <span class="hider">Click on me to hide All</span>
        </a>
      </li>
      <!-- -->
      <li class="enabled">
        <a class="c-pointer">
          <span class="hider">Click on me to hide All</span>
        </a>
      </li>
      <!-- -->
    </ul>
  </div>
</div>
<!-- -->
<hr/>
<!-- -->
<div class="emoticon">
  <div class="sb-social">
    <ul class="c-default">
      <!-- -->
      <li class="enabled">
        <a class="c-pointer">
          <span class="hider">Click on me to hide All</span>
        </a>
      </li>
      <!-- -->
      <li class="enabled">
        <a class="c-pointer">
          <span class="hider">Click on me to hide All</span>
        </a>
      </li>
      <!-- -->
      <li class="enabled">
        <a class="c-pointer">
          <span class="hider">Click on me to hide All</span>
        </a>
      </li>
      <!-- -->
      <li class="enabled">
        <a class="c-pointer">
          <span class="hider">Click on me to hide All</span>
        </a>
      </li>
      <!-- -->
      <li class="enabled">
        <a class="c-pointer">
          <span class="hider">Click on me to hide All</span>
        </a>
      </li>
      <!-- -->
    </ul>
  </div>
</div>
<!-- -->
<hr/>

有人以前经历过这种情况吗?

jsFiddle here

最佳答案

$(document).on('click', '.hider', function() {
  var obj = $(this);
  obj.closest("ul.c-default").find(".hider").not(obj).removeClass("hider");
});

关于javascript - jQuery - .on ("click") 隐藏每个 sibling ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41368431/

相关文章:

Javascript 如果字母匹配,包括 Enter 键键码 13

javascript - 长度不读的 JQuery 密码验证?

javascript - 修复了单页网站问题中的切换菜单

javascript - 如何使用 Javascript 或 jQuery 禁用/隐藏列表元素

javascript - 使用 jQuery 仅更新同一 div 类中的一个元素

javascript - 相对于页面上的另一个 div 滚动 div

javascript - 将 shell 通配符转换为正则表达式

javascript - React.js 测试未能找到组件

jQuery css 固定在左侧但绝对在顶部

jquery - Fullpage.js 有时在手机上没有响应