2016-04-19 21 views
2

HTML要素にクラスがあるかどうかを調べたい場合は、jQueryで関数を実行します。私のコードは、要素が複数のクラスを持たない場合にのみ機能します。私は.hasClass()メソッドを使う必要があると信じていますが、わかりませんでした。要素がクラスを持っているかどうかjQueryチェック

var pageClass = $("body").attr('class'); 
switch (pageClass) { 
    case ("page1"): 
    $('h1').html('heading1'); 
    break; 
    case ("page2"): 
    $('h1').html('heading2'); 
    break; 
    default: 
    $('h1').html('default'); 
} 

フィドル: https://jsfiddle.net/9o70dbzz/2/

+3

他の場合hasClass() –

+1

'body'が3つのクラスをすべて持っていたらどうしますか?あなたは一番最初のもの、最後のもの、またはすべてを一緒に追加したいですか? –

+0

http://api.jquery.com/hasClass <---ドキュメントはすぐそこにあり、無料で読むことができます。 –

答えて

3

これは、セレクタで解決することができます。

$('h1').html('default'); 
$('body.page1 h1').html('heading1'); 
$('body.page2 h1').html('heading2'); 
3

.hasClass()機能を使用してください。

if($("body").hasClass("page1")){ 
    $("h1").html("heading1"); 
} 
else if($("body").hasClass("page2"){ 
    $("h1").html("heading2"); 
} 
else { 
    $("h1").html("default"); 
} 
+0

が唯一の方法は、他のステートメントを使用することですか? – Dejavu

+1

if/elseを "hasClass"関数と共に使用するのが最も簡単です。このシナリオでは、switch文を使用すると複雑すぎます。 – Sonny

+2

コード例が複数のクラスを使用するため、Sonnyの言うことは意味があります。 '.hasClass()'メソッドは 'if(className.indexOf( 'page1')> -1){...}'に似ています。それらのどちらもスイッチでうまく動作しません。ただし、スイッチで一意のid属性を使用できます。 ''または ''と同様に 'switch($(" body ")。attr(" id ")){...}'を使います。その理由は、クラスを持つ複数の値ではなく、idを持つスイッチには1つの値しか渡されないからです。したがって、スイッチは単一の値キーとif/elseステートメントが複数の入力キーで動作することを覚えておくとよいでしょう。 – Clomp

1

私は、このような方法でそれを行うだろう....

代わりにswitch文の使用の
$(document).ready(function() { 
var element = $("body"); 

var classesCollection = { 
    'page1': 'heading1', 
    'page2': 'heading2' 
}; 

for (var propertyName in classesCollection) { 
    var propertyValue = classesCollection[propertyName]; 
    if (element.hasClass(propertyName)) element.html(propertyValue); 
    else element.html('default'); 
} 

}); 

https://jsfiddle.net/9o70dbzz/4/

関連する問題