jQueryで要素に複数のCSSクラスがあるかどうかを判定する方法
jQueryで要素にCSSクラスがあるかどうかを判断する方法
jQueryには、要素に特定のCSSクラスが存在するかどうかを判定するhasClass()
メソッドがあります。このメソッドは、条件分岐や処理の分岐などに役立ちます。
<div class="example"></div>
<div class="example other"></div>
// 要素に "example" クラスがあるかどうかを判定
$( ".example" ).hasClass( "example" ); // true
// 要素に "other" クラスがあるかどうかを判定
$( ".example" ).hasClass( "other" ); // false
解説
上記のサンプルコードでは、以下の処理が行われています。
$(".example")
で、class="example"
を持つ要素を選択します。.hasClass("example")
メソッドで、選択された要素に "example" クラスがあるかどうかを判定します。- クラスが存在する場合は
true
、存在しない場合はfalse
が返されます。
複数クラスの判定
複数のクラスを同時に判定したい場合は、カンマ区切りでクラス名を指定できます。
// 要素に "example" と "other" クラスがあるかどうかを判定
$( ".example" ).hasClass( "example other" ); // true
条件分岐
hasClass()
メソッドの返値は true
または false
なので、条件分岐に使用できます。
if ( $( ".example" ).hasClass( "example" ) ) {
// "example" クラスが存在する場合の処理
} else {
// "example" クラスが存在しない場合の処理
}
hasClass()
メソッドは、要素に特定のクラスが存在するかどうかを判定するだけなので、クラスの追加や削除には使用できません。クラスの追加や削除には、addClass()
や removeClass()
メソッドを使用する必要があります。
<div id="example">
<h1>タイトル</h1>
<p>これはサンプルです。</p>
</div>
JavaScript
// 要素に "example" クラスがあるかどうかを判定
$( "#example" ).hasClass( "example" ); // true
// 要素に "active" クラスを追加
$( "#example" ).addClass( "active" );
// 要素に "active" クラスがあるかどうかを判定
$( "#example" ).hasClass( "active" ); // true
// 要素から "active" クラスを削除
$( "#example" ).removeClass( "active" );
// 要素に "active" クラスがあるかどうかを判定
$( "#example" ).hasClass( "active" ); // false
実行結果
- 最初は、要素に "example" クラスのみ存在します。
- "active" クラスが追加されます。
- "example" クラスと "active" クラスの両方が存在します。
jQueryで要素にCSSクラスがあるかどうかを判定する他の方法
attr()
メソッドを使用して、要素の class
属性を取得し、その中にクラス名が存在するかどうかを判定できます。
// 要素の "class" 属性を取得
var classes = $( "#example" ).attr( "class" );
// クラス名 "example" が存在するかどうかを判定
classes.indexOf( "example" ) !== -1; // true
注意点
attr()
メソッドは、すべてのクラス名をスペース区切りで取得します。- 判定したいクラス名が複数ある場合は、ループ処理などで個別に判定する必要があります。
is()
メソッドを使用して、要素が特定のセレクタにマッチするかどうかを判定できます。
// 要素が ".example" セレクタにマッチするかどうかを判定
$( "#example" ).is( ".example" ); // true
is()
メソッドは、セレクタを指定する必要があります。- 複雑なセレクタを使用する場合は、処理速度が遅くなる可能性があります。
:has()
セレクタを使用して、特定のクラスを持つ子要素を持つ要素を判定できます。
// "example" クラスを持つ子要素を持つ要素を判定
$( ".parent" ).has( ".example" ); // true
- :has() セレクタは、子要素のみを判定します。
- 複数階層の子要素を判定する場合は、複雑なセレクタになる可能性があります。
- シンプルな判定であれば、
hasClass()
メソッドが最も効率的です。 - 複数クラスを同時に判定したい場合は、
attr()
メソッドが便利です。 - 特定のセレクタにマッチするかどうかを判定したい場合は、
is()
メソッドが使いやすいです。 - 子要素を持つ要素を判定したい場合は、:has() セレクタが役立ちます。
それぞれの方法の特徴を理解して、状況に合わせて適切な方法を選択しましょう。
javascript jquery css