jQuery 特定classをループする方法 each

jQueryで特定クラスをループする方法です。

each()メソッドを使う

eachメソッドを使えば、特定クラスをループすることができます。

$('セレクタ').each(function(index, element){ //ここに処理を記載 });

実際はこんな感じ

<ul>
    <li class="list">1項目</li>
    <li class="list">2項目</li>
    <li class="list">3項目</li>
    <li class="list">4項目</li>
</ul>
$(".list").each(function(i,e){
    if($(e).text === '2項目'){
        // 一致したらクラスを追加する
        $(e).addClass("no2");
        return false;
    }
});

breakはreturn false;で行う

ループを途中で処理を抜けたい場合はreturn false;で終了させます。

continueはreturn true;(false以外)で行う

ループで特定条件以外のものは、次の配列に進みたいcontinueをしたい場合、return;で行います。
returnは[false]以外なら何でも良いです。

ハマったこと

eachメソッドの中で、特定処理を行う実装をしたら、ループが止まらなかった。

functionで別処理を呼び出しているので、特定条件を判別するよう、フラグ管理にして解決した。

var locationFg = false;

$(".list").each(function(i,e){
    if($(e).text === '2項目'){
        // 一致したらクラスを追加する
        locationFg = true;
        return false;
    }
});
var locationStr = "./hoge.html"

if(locationFg){
    locationStr = "./fuga.html"
}
// ページ移動
location.href = locationStr;

jquery datatables ヘッダがずれる事象の解消方法

jqueryのdatatablesを利用した際、ScrollYを指定するとヘッダがずれることがあります。

解決策

[columns.adjust()]を使う

datatableには、再度列の調整をしてくれる関数が提供されています。

var table = $('#datatable1').DataTable({
    scrollY: 360,
    ...
});

table.columns.adjust();

注意点

$(‘#datatable1’).datatable({});でも表はできますがcolumns.adjust()関数は動きません。
$(‘#datatable1’).Datatable({});なら動きます。

×:datatable
〇:Datatable

これに結構な時間ハマった。

タブなどの[display:none;]は切り替えで再度[columns.adjust()]を実施する

TableをCSS上で表示切替する場合は、CSSのdisplay: none;を切り替えることも多いと思います。
切り替え処理時に、columns.adjust()処理を追加することで、ずれなく表示できます。

レスポンシブなら[$(window).on(‘resize’…]で制御する

レスポンシブに設定するなら、Windowサイズを変更したときに発火させると良いです。

スマホの縦表示、横表示や
PCブラウザの起動時と、最大化時などに使えます。

var table = $('#datatable1').DataTable({
    scrollY: 360,
    ...
});

$(window).on('resize', function(){
    table.columns.adjust();
});

jQueryでselect要素の特定のoptionを隠したい!

菱田直哉
select要素の特定のoptionを隠すにはどうしたらいいか調べた。

方法は2つあります。

  1. 特定option要素をremoveしたり、appendしたりする
  2. タグでラップしてしまう

ちなみに、hide();する(cssに{display: none;}を追加する)はNGです。

cssではIEが非表示にならないから!というのが発見でした。

菱田直哉
では早速。

まずはHTMLのsampleです。jQueryを読み込む方法は、GoogleCDNより読み込みます。

モリー
jquery-sample_001.html

<!DOCTYPE html>
<html>
<head>
<meta charset=”UTF-8″>
<title>jQuery test</title>
<!– <script type=”text/javascript” src=”https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js”></script> –>
<script
src=”https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js”></script>
<script src=”../js/jquery-sample_001.js”></script>
</head>
<body>
 <select id=”select1″>
  <option value=”1″>1番目</option>
<option value=”2″>2番目</option>
<option value=”3″>3番目</option>
 </select>
 <button id=”btn-hide”>隠す</button>
<button id=”btn-back”>戻す</button>
</body>
</html>

モリー
jquery-sample_001.js


// jQueryでselect要素の特定のoptionを隠したい!
$(function(){
 $(‘#btn-hide’).on(‘click’,function(){
$(‘select#select1 option[value=”1″]’).wrap(‘<span>’);});

$(‘#btn-back’).on(‘click’,function(){
$(‘select#select1 option[value=”1″]’).unwrap(‘<span>’);

});
});


菱田直哉
あ、隠れたね。

jQueryをGoogleのCDNから読み込む方法

菱田直哉
jQueryはダウンロードしなくても、使えます!

Google : https://developers.google.com/speed/libraries/#jquery

モリー
バージョンも選べますのでリンクから確認してね。

jQuery

3.x snippet:
<script src=”https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js”></script>
2.x snippet:
<script src=”https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js”></script>
1.x snippet:
<script src=”https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js”></script>

jQuery UI

<link rel=”stylesheet” href=”https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/themes/smoothness/jquery-ui.css”>
<script src=”https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js”></script>