javascript - Filter by checkbox show/hide target divs jquery -


i'm having trouble targetting divs need show/hide when jquery runs.

i need hide <div class="grid-cell> otherwise flexbox won't display correctly once div's hidden.

i'm having trouble getting hit correct divs , it's not working after changing code bit.

https://jsfiddle.net/s1e93j92/6/

<input type="checkbox" class="checkbox" name="high" data-category-type="high">high <input type="checkbox" class="checkbox" name="low" data-category-type="low" > low       <input type="checkbox" class="checkbox" name="low" data-category-name="bread" > bread  <div class="wrap"> <div class="grid grid--flexcells grid--gutters grid--1of2">             <div class="grid-cell">         <div class="box">             <div id="categories" data-category-type="high" data-category-name="low">                 <a href="#">                 <div class="image"><img src="#"></div>                 </a>             </div>         </div>     </div>      <div class="grid-cell">         <div class="box">              <div id="categories" data-category-type="high" data-category-name="bread">                 <a href="#">                 <div class="image"><img src="#"></div>                 </a>             </div>         </div>     </div>             <div class="grid-cell">         <div class="box">             <div id="categories" data-category-type="high" data-category-name="low">                 <a href="#">                 <div class="image"><img src="#"></div>                 </a>             </div>         </div>     </div>                      <div class="grid-cell">         <div class="box">             <div id="categories" data-category-type="low" data-category-name="bread">                 <a href="#">                 <div class="image"><img src="#"></div>                 </a>             </div>         </div>     </div> </div>     

.wrap{width:80%; height:200px; border:1px solid #ccc;} .grid { display: flex; flex-wrap: wrap; list-style: none; margin: 0; padding: 0; } .grid--1of2 > .grid-cell { flex: 0 0 50%; } .image{width:100%; height:100px; border:1px solid #ff00ff}   $('.checkbox ').on('click', function (e) {   var $this = $(this),     $links = $('.checkbox');  if ($this.hasclass('selected')) {     $this.removeclass('selected'); } else {     $this.addclass('selected'); }   var selecteddivs = $('.box > categories > > div').hide();  var anyselectedcheckbox = false;  $.each($links, function (k, v) {  $this = $(v);  if ($this.hasclass('selected')) {     anyselectedcheckbox = true;     var cat = $this.data('categorytype');     var nam = $this.data('categoryname');     selecteddivs = selecteddivs.filter('[data-category-type="'+cat+'"], [data-category-name="'+nam+'"]'); }  }); selecteddivs.show();  if(!anyselectedcheckbox) { $('.box > div').show();  }   }); 

as comment suggests, it's not clear you're trying do, think got it. didn't make changes html or css. modified javascript little.

$('.checkbox').on('click', function (e) {     var $this = $(this),         $links = $('.checkbox');      if ($this.hasclass('selected')) {         $this.removeclass('selected');     } else {         $this.addclass('selected');     }      $('.box').hide();     if ($(".checkbox:checked").length > 0) {         // 1 checked         $.each($links, function (k, v) {             $this = $(v);             if ($this.hasclass('selected')) {                 anyselectedcheckbox = true;                 var cat = $this.data('categorytype');                 var nam = $this.data('categoryname');                 $('.box:has(div[data-category-type="' + cat + '"],div[data-category-name="+nam+"] )').show();             }          });     } else {         // none checked         $('.box').show();     } }); 

http://jsfiddle.net/yzyyqqey/


Comments

Popular posts from this blog

c# - Validate object ID from GET to POST -

node.js - Custom Model Validator SailsJS -

php - Find a regex to take part of Email -