0

私は jQuery を初めて使用し、ユーザーがリスト ビューとグリッド ビューを切り替えることができる結果ページを作成しています。動作しているように見えますが、多くの結果が得られるとバグがあるようです。これがなぜなのか誰にもわかりますか?

コードペンデモ

どんな助けでも大歓迎です。

JS

    $('.btn.grid').click(function() {
      if (!$(this).hasClass("active")) {
        $(this).addClass("active");
        $('.results-wrapper .grid_12').removeClass("grid_12").addClass("grid_3");
        $('.wrapper .results').addClass("grid-view-active");
        if ($(".btn.list").hasClass("active")) {
          $(".btn.list").removeClass("active");
          $('.wrapper .results').removeClass("list-view-active");
        }
      }
    });
    $('.btn.list').click(function() {
      if (!$(this).hasClass("active")) {
        $(this).addClass("active");
        $('.results-wrapper .grid_3').removeClass("grid_3").addClass("grid_12");
        $('.wrapper .results').addClass("list-view-active");
        if ($(".btn.grid").hasClass("active")) {
          $(".btn.grid").removeClass("active");
          $('.wrapper .results').removeClass("grid-view-active");
        }
      }
    });

HTML

<span class="btn grid active">grid</span>
<span class="btn list">list</span>

<div class="wrapper">
  <div class="results-wrapper">
    <ul class="results">
      <li class="grid_3">
        <h1>Title</h1>
        <img src="http://rosherunwoven.co.uk/images/Nike%20Free%20Trainer%205.0%20Mens%20Trainers%20Black.jpg"/>
      </li>
      <li class="grid_3">
        <h1>Title</h1>
        <img src="http://rosherunwoven.co.uk/images/Nike%20Free%20Trainer%205.0%20Mens%20Trainers%20Black.jpg"/>
      </li>
      <li class="grid_3">
        <h1>Title</h1>
        <img src="http://rosherunwoven.co.uk/images/Nike%20Free%20Trainer%205.0%20Mens%20Trainers%20Black.jpg"/>
      </li>
      <li class="grid_3">
        <h1>Title</h1>
        <img src="http://rosherunwoven.co.uk/images/Nike%20Free%20Trainer%205.0%20Mens%20Trainers%20Black.jpg"/>
      </li>
      <li class="grid_3">
        <h1>Title</h1>
        <img src="http://rosherunwoven.co.uk/images/Nike%20Free%20Trainer%205.0%20Mens%20Trainers%20Black.jpg"/>
      </li>
      <li class="grid_3">
        <h1>Title</h1>
        <img src="http://rosherunwoven.co.uk/images/Nike%20Free%20Trainer%205.0%20Mens%20Trainers%20Black.jpg"/>
      </li>
      <li class="grid_3">
        <h1>Title</h1>
        <img src="http://rosherunwoven.co.uk/images/Nike%20Free%20Trainer%205.0%20Mens%20Trainers%20Black.jpg"/>
      </li>
      <li class="grid_3">
        <h1>Title</h1>
        <img src="http://rosherunwoven.co.uk/images/Nike%20Free%20Trainer%205.0%20Mens%20Trainers%20Black.jpg"/>
      </li>
      <li class="grid_3">
        <h1>Title</h1>
        <img src="http://rosherunwoven.co.uk/images/Nike%20Free%20Trainer%205.0%20Mens%20Trainers%20Black.jpg"/>
      </li>
      <li class="grid_3">
        <h1>Title</h1>
        <img src="http://rosherunwoven.co.uk/images/Nike%20Free%20Trainer%205.0%20Mens%20Trainers%20Black.jpg"/>
      </li>
    </ul>
  </div>
</div>

CSS

.btn {
  background: #ccc;
  cursor: pointer;
  display: inline-block;
  height: 35px;
  width: 35px;
}
.btn.active {
  background: red;
}
li {
  float: left;
  height: 200px;
  width: 200px;
}
li img {
  max-width: 100%;
  max-height: 100%;
}
.grid_3 {
  width: 25%;
}
.grid_12 {
  width: 100%;
}
4

1 に答える 1