回答:
次のhasClass
方法を使用します。
jQueryCollection.hasClass(className);
または
$(selector).hasClass(className);
引数は(明らかに)チェックしているクラスを表す文字列であり、ブール値を返します(そのため、ほとんどのjQueryメソッドのようにチェーンをサポートしていません)。
注:className
空白を含む引数を渡すと、それは文字通りコレクションの要素のclassName
文字列と照合されます。たとえば、要素がある場合、
<span class="foo bar" />
その後、これは返されtrue
ます:
$('span').hasClass('foo bar')
これらは返されfalse
ます:
$('span').hasClass('bar foo')
$('span').hasClass('foo bar')
FAQから
elem = $("#elemid");
if (elem.is (".class")) {
// whatever
}
または:
elem = $("#elemid");
if (elem.hasClass ("class")) {
// whatever
}
jQueryなし:
var hasclass=!!(' '+elem.className+' ').indexOf(' check_class ')+1;
または:
function hasClass(e,c){
return e&&(e instanceof HTMLElement)&&!!((' '+e.className+' ').indexOf(' '+c+' ')+1);
}
/*example of usage*/
var has_class_medium=hasClass(document.getElementsByTagName('input')[0],'medium');
これはjQueryよりも高速です。
...&&!!((' '+e.classname+' ').indexOf(' '+c+' ')+1)
、とだけではなく&&!(' '+e.classname+' ').indexOf(' '+c+' ')
?
indexOf
リターンが-1
あるクラスが存在しません。もしそうなら!!-1
、それはそうなるでしょうtrue
。私がやっているので!!-1+1
、それは間違っています。より良い方法はですが...&&!!~(' '+e.className+' ').indexOf(' '+c+' ')
、当時は覚えていませんでした。
...&&~(' '+e.className+' ').indexOf(' '+c+' ')
公式のjQuery FAQページを確認してください。
私の場合、私は「is」jQuery関数を使用しました、異なるcssクラスが追加されたHTML要素があり、これらの真ん中に特定のクラスを探していたので、「is」を使用して確認しましたhtml要素に動的に追加されたクラス。すでに他のcssクラスがあり、これは別の優れた代替手段です。
簡単な例:
<!--element html-->
<nav class="cbp-spmenu cbp-spmenu-horizontal cbp-spmenu-bottom cbp-spmenu-open" id="menu">somethings here... </nav>
<!--jQuery "is"-->
$('#menu').is('.cbp-spmenu-open');
高度な例:
<!--element html-->
<nav class="cbp-spmenu cbp-spmenu-horizontal cbp-spmenu-bottom cbp-spmenu-open" id="menu">somethings here... </nav>
<!--jQuery "is"-->
if($('#menu').is('.cbp-spmenu-bottom.cbp-spmenu-open')){
$("#menu").show();
}