简体   繁体   中英

Show hide element on same button click

I have the following sample code :

CODE HTML:

<ul>
  <li class="item"> item 1 </li>
  <li class="item"> item 1 </li>
  <li class="item"> item 1 </li>
  <li class="item"> item 1 </li>
  <li class="item hidden"> item 1 </li>
  <li class="item hidden"> item 1 </li>
</ul>
<button class="button">Show/Hide element</button>

CODE CSS:

.hidden {
  display: none;
}
.visible {
  display: block;
}

CODE JS:

$('.button').on('click', function (e) {
  var item = $('.item');
  item.removeClass('hidden'); 
});

I want to add class .visible to the elements that previously had the .hidden class. Basically I want to hide the items again at the next click and be a toggle of classes.

How can I hide the last two items?

Thanks in advance!

You need to use .toggle()

 $('.button').on('click', function (e) {
      $('.hidden').toggle('visible'); 
});

Try this, no need of css, just .toggle() will do it.

 $('.button').on('click', function (e) { $('.hidden').toggle(); }); 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <ul> <li class="item"> item 1 </li> <li class="item"> item 1 </li> <li class="item"> item 1 </li> <li class="item"> item 1 </li> <li class="item hidden"> item 1 </li> <li class="item hidden"> item 1 </li> </ul> <button class="button">Show/Hide element</button> 

Alternatively you can also use below approach:

CSS

.hidden {
 display:none;
}

JQuery

$('.button').on('click', function (e) {
      $('#anyElement').toggleClass('hidden');
});

You need to use switchClass to remove existing one and add second. 在此处输入图片说明

Alternatively, You can loop through each element on button click and remove/add the relevant classes.

 $("button").click(function(){ $("li").each(function(){ let $this = $(this); if($this.hasClass('hidden')){ $this.removeClass("hidden").addClass("visible"); } else if($this.hasClass('visible')){ $this.removeClass("visible").addClass("hidden"); } }) }) 
 .hidden { display: none; } .visible { display: block; } 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <ul> <li class="item"> item 1 </li> <li class="item"> item 1 </li> <li class="item"> item 1 </li> <li class="item"> item 1 </li> <li class="item hidden"> item 1 </li> <li class="item hidden"> item 1 </li> </ul> <button class="button">Show/Hide element</button> 

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM