jquery父级兄弟选择器后退两步

dan*_*oge 1 javascript jquery

我试图改变一个元素的类,但似乎无法在这里得到它是我的HTML

<div class = "grand">
  <section class = 'minimized'>
     <div class = "div-1"> <button class = 'assign-show'></button> </div>
  </section>
  <section class = 'assignment'>
     <div class = "div-2"> <button class = 'assign-hide'></button> </div>
  </section>
</div>
Run Code Online (Sandbox Code Playgroud)

我需要的是如果单击assign-show,然后添加 <section class = 'assignment'><section class = 'minimized'>

下面是我的jquery脚本

$('.assign-show').on('click',function(){
    $(this).closest('.minimized').addClass('hide'); 
    $(this).closest('.minimized').addClass('assignment-hide');
    $(this).parent('section').siblings('.assignment').removeClass('hide');
   $(this).parent('section').siblings('.assignment').removeClass('assignment-hide'); 
 });
Run Code Online (Sandbox Code Playgroud)

上面的代码适用于addclass但删除类不起作用.

Ror*_*san 7

你的问题是因为parent()只走了DOM树的一层,但section距离它只有两层.assign-show.要解决此问题,您可以使用parents()(注释,复数)或closest().后者似乎更适合,因为它在第一次匹配时停止.

另请注意,您可以一起加入addClass()removeClass()拨打电话.试试这个:

$('.assign-show').on('click', function() {
  $(this).closest('.minimized').addClass('hide assignment-hide');
  $(this).closest('section').siblings('.assignment').removeClass('hide ssignment-hide'); 
});
Run Code Online (Sandbox Code Playgroud)