🐝

【jQuery】data属性で実装するタブUI

2023/08/02に公開

jQueryでタブUIを作る時は、data属性使った方が幸せに開発できたので共有。
割と汎用的だと思います。

const switchTab = () => {
    // タブボタンのclass
    const tabBtn = 'js-select';
    // 切り替えるタブのclass
    const tabContent = 'js-tab';
    // 現在表示中のタブ・ボタンにつけるclass
    const activeFlag = 'is-active';
    // タブボタンのdata属性
    const dataSelect = 'select';
    // タブのdata属性
    const dataTab = 'tab';

    // まずは各タブを非表示(デフォルトで表示するタブにはis-activeをつけておく)
    $(`.${tabContent}`).each(function() {
        if(!$(this).hasClass(activeFlag)) {
            $(this).hide();
        }
    });
    
    // タブ切替
    $(`.${tabBtn}`).on('click', function(){
        // クリックされたボタンのdata属性を取得
        let target = $(this).data(dataSelect);
	// activeクラスの除去・付与
        $(`.${tabBtn}`).removeClass(activeFlag);
        $(`.${tabBtn}[data-${dataSelect}="${target}"]`).addClass(activeFlag);
	// タブコンテンツの非表示・表示、クラスの除去・付与
        $(`.${tabContent}`).hide().removeClass(activeFlag);
        $(`.${tabContent}[data-${dataTab}="${target}"]`).fadeIn().addClass(activeFlag);
    });
}

switchTab();

Discussion