【jQuery】偶数/奇数の要素で処理を切り替える

■ 案1:「$(”XXX:even/odd”).addClass(”YYY”)」を使用する

サンプル

<!DOCTYPE html>
<html lang="jp">
<head>
<meta charset="utf-8">
<title>odd/even</title>
<style>
li {
  list-style-type:none;
  width:40%;
}
.for-even {
  background-color:orange;
}
.for-odd {
  background-color:green;
}
</style>
<head>
<body>
<ul>
  <li>0</li>
  <li>1</li>
  <li>2</li>
  <li>3</li>
  <li>4</li>
  <li>5</li>
  <li>6</li>
  <li>7</li>
  <li>8</li>
  <li>9</li>
</ul>
<script
  src="https://code.jquery.com/jquery-3.3.1.slim.min.js"
  integrity="sha256-3edrmyuQ0w65f8gfBsqowzjJe2iM6n0nKciPUp8y+7E="
  crossorigin="anonymous"></script>
<script>
$(function() {
  $("li:even").addClass("for-even");
  $("li:odd").addClass("for-odd");
});
</script>
</body>
</html>

参考文献

http://www.takaya-com.jp/archives/2015/10/jquery_odd_even/

■ 案2:「$(”XXX:visible:even/odd”).addClass(”YYY”)」を使用する

案1の問題点
 * 「display:none」などで表示した場合に対応できない
  => 『:visible』を追加すると解決できた

サンプル

<!DOCTYPE html>
<html lang="jp">
<head>
<meta charset="utf-8">
<title>odd/even</title>
<style>
li {
  list-style-type:none;
  width:40%;
}
.for-even {
  background-color:orange;
}
.for-odd {
  background-color:green;
}
</style>
<head>
<body>
<input id="on-off-checkbox" type="checkbox" checked>1/2/4/6を表示/非表示<br>
<ul>
  <li>0</li>
  <li class="on-off">1</li>
  <li class="on-off">2</li>
  <li>3</li>
  <li class="on-off">4</li>
  <li>5</li>
  <li class="on-off">6</li>
  <li>7</li>
  <li>8</li>
  <li>9</li>
</ul>
<script
  src="https://code.jquery.com/jquery-3.3.1.slim.min.js"
  integrity="sha256-3edrmyuQ0w65f8gfBsqowzjJe2iM6n0nKciPUp8y+7E="
  crossorigin="anonymous"></script>
<script>
$(function() {
  $("li:even").addClass("for-even");
  $("li:odd").addClass("for-odd");
  
  $('#on-off-checkbox').change(function() {
    // 一旦付加したCSSをクリア
    $("li").removeClass("for-even");
    $("li").removeClass("for-odd");
    
    if ($(this).prop('checked')) {
      $('.on-off').show(500);
    } else {
      $('.on-off').hide(500);
    }
    
    // 表示されているCSSを追加
    $("li:visible:even").addClass("for-even");
    $("li:visible:odd").addClass("for-odd");
  });
});
</script>
</body>
</html>

関連記事

表示 / 非表示の切り替え

https://blogs.yahoo.co.jp/dk521123/35497857.html