Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery隐藏没有类的所有元素_Javascript_Jquery_Css_If Statement - Fatal编程技术网

Javascript jQuery隐藏没有类的所有元素

Javascript jQuery隐藏没有类的所有元素,javascript,jquery,css,if-statement,Javascript,Jquery,Css,If Statement,我有一个简单的jQuery,它可以在单击后将类“active”切换为li: $('li').click(function() { $(this).toggleClass('active'); }); 然后我想做的是隐藏列表中的所有其他li(显示:无),然后当您再次单击活动li时,它将删除活动类,但将所有其他li设置为再次可见。这就是我正在努力实现的目标 我尝试在click函数中使用if语句来检查“active”类是否存在,是否将所有li设置为hidden,如果没有,则将css设置为再次

我有一个简单的jQuery,它可以在单击后将类“active”切换为li:

$('li').click(function() {
    $(this).toggleClass('active');
});
然后我想做的是隐藏列表中的所有其他li(显示:无),然后当您再次单击活动li时,它将删除活动类,但将所有其他li设置为再次可见。这就是我正在努力实现的目标

我尝试在click函数中使用if语句来检查“active”类是否存在,是否将所有li设置为hidden,如果没有,则将css设置为再次显示它们,但这不起作用

编辑:

tilz0R的答案几乎就是我想要的,我只是稍微修改了一下以满足我的需要

$('li').click(function() {
    $(this).toggleClass('active').siblings().toggleClass('hidden');
});

隐藏类只有display:none,因此除了单击的li之外,所有其他li都被隐藏,然后在第二次单击活动li时再次显示所有li。

您必须找到当前
li
元素的同级

$('li').click(function() {
    $(this).toggleClass('active').siblings().hide();
});

当您单击任何
  • 标记时,所有
  • 标记都将隐藏,但所选的
  • 标记除外。然后再次单击,所有
  • 标记将显示并删除活动类

    HTML:

    <ul>
      <li>first</li>
      <li>second</li>
      <li>third</li>
      <li>forth</li>
    </ul>
    

    只需使用
    addClass
    removeClass
    show()
    /
    hide()

    $('li')。单击(函数(){
    if($(this).hasClass('active')){
    $('li').show();
    $(this.removeClass('active');
    }否则{
    $('li').hide();
    $(this.addClass('active').show();
    }
    });
    
    li{
    光标:指针;
    }
    .主动{
    颜色:绿色;
    }
    
    
  • 项目1
  • 项目2
  • 项目3
  • 项目4

  • 我们可以举一些最简单的例子吗?这几乎是可行的,但是第二次单击后,其他li就不再显示了。我想知道你的结果应该是什么,但是也许
    。toggle()
    而不是
    。hide()
    可以完成这项工作@爱德华1442
        jQuery('ul li').click(function() {
          if(jQuery(this).hasClass('active')) {
            jQuery(this).removeClass('active');
            jQuery('ul li:not(".active")').show();
          } else {
            jQuery('ul li').removeClass('active');
            jQuery(this).addClass('active');
            jQuery('ul li:not(".active")').hide();
          }
        });