javascript - 我的选择过程不匹配?

标签 javascript jquery html css

我有一个场景- 我必须选择一系列具有 2 个概率的元素:

  1. 点击全选。
  2. 通过单独选择。

问题是如果我尝试同时执行这两个 . 我的全选和单独选择运行良好。但问题是当我全选时单击单个元素然后全选时效果不佳。 以下是我到目前为止所尝试过的。现在请帮助我解决这个问题,以便它在所有情况下都能正常工作,即 如果我在选择所有元素后单击任何元素后仍然选择所有元素,那么它应该可以正常工作。 还附加图像以提供更多清晰度:

Step 1 :

enter image description here

Step 2:

enter image description here

Step3: The problem area

enter image description here

$('.SubNavHover li:first-child').click(function() {
  $('.SubNavHover li a').toggleClass('allActive');
  if ($('.SubNavHover li a').hasClass('currentActive')) {
    $('.SubNavHover li a').removeClass('currentActive ').addClass('allActive ');
  }
  if ($(this).nextAll().hasClass('allActive')) {
    $(this).addClass('allActive');
  } else {

    $(this).removeClass('allActive');
  }

});
$('.SubNavHover li a').click(function() {
  $(this).toggleClass('currentActive');
  if ($(this).hasClass('allActive')) {
    $(this).removeClass('currentActive allActive');
  }
  $(this).removeClass('allActive');
});
ul,
li {
  margin: 0px;
  padding: 0px;
}

a {
  color: black;
}

a.allActive {
  color: blue;
}

a.currentActive {
  color: blue;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" />
<ul class="SubNavHover" style="opacity:1; visibility:visible;">
  <li><a href="#">Select All </a></li>
  <li><a href="#">Sub Menu <i class="fa fa-check"></i></a></li>
  <li><a href="#">Sub Menu <i class="fa fa-check"></i></a></li>
  <li><a href="#">Sub Menu <i class="fa fa-check"></i></a></li>
  <li><a href="#">Sub Menu <i class="fa fa-check"></i></a></li>
  <li><a href="#">Sub Menu <i class="fa fa-check"></i></a></li>
  <li><a href="#">Sub Menu <i class="fa fa-check"></i></a></li>
  <li><a href="#">Sub Menu <i class="fa fa-check"></i></a></li>


</ul>

最佳答案

您可以按大小检查事件元素

这个条件解决了你的问题

if($(".currentActive").size() == $(".fa-check").size()){
    $('.SubNavHover li a').toggleClass('currentActive');
}else{
    $('.SubNavHover li a').addClass('currentActive');
}

这是工作代码

$('.SubNavHover li:first-child').click(function() {
  if($(".currentActive").size() == $(".fa-check").size()){
     $('.SubNavHover li a').toggleClass('currentActive');
  }else{
       $('.SubNavHover li a').addClass('currentActive');
  }
 
});
$('.SubNavHover li a').click(function() {
  $(this).toggleClass('currentActive');
});
ul,
li {
  margin: 0px;
  padding: 0px;
}

a {
  color: black;
}

a.allActive {
  color: blue;
}

a.currentActive {
  color: blue;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" />
<ul class="SubNavHover" style="opacity:1; visibility:visible;">
  <li><a href="#">Select All </a></li>
  <li><a href="#">Sub Menu <i class="fa fa-check"></i></a></li>
  <li><a href="#">Sub Menu <i class="fa fa-check"></i></a></li>
  <li><a href="#">Sub Menu <i class="fa fa-check"></i></a></li>
  <li><a href="#">Sub Menu <i class="fa fa-check"></i></a></li>
  <li><a href="#">Sub Menu <i class="fa fa-check"></i></a></li>
  <li><a href="#">Sub Menu <i class="fa fa-check"></i></a></li>
  <li><a href="#">Sub Menu <i class="fa fa-check"></i></a></li>


</ul>

关于javascript - 我的选择过程不匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44195018/

相关文章:

javascript - 第二个 Angular 按钮不调用功能

javascript - B 做某事时如何更改 A 的 html 站点

javascript - 当元素在视口(viewport)中时应用选择器

javascript - 获取选择元素的初始选择值

javascript - 有没有办法像Angular一样为ReactJS中的逻辑、​​html和CSS等组件制作单独的文件?

javascript - NodeJS 未定义的 JSON 对象

javascript - 选择另一个 div 时隐藏内容

jquery - 在 Capybara 测试中使用 jQuery

javascript - 无法禁用复选框选择上的文本框

javascript - 尝试根据时间是过去、当前还是 future 来更改背景颜色