javascriptで要素についたクラスの1つめだけ取り出したい時。
element.className.split(" ")[0];
で最初のクラス名を取得できます。
たいていjQueryを使っている思うので、
// HTML <p id="hoge" class="className1 className2">要素だよ</p>
// jQuery $('#hoge').attr('class').split(" ")[0];
の様な記述をすることが多いんじゃないかと思います。
が、ここでトラップです。
jQueryのattr
を使うと、
下のように要素にクラスが無い時にだとsplitできないよ。とエラーが起きてしまいます。
// HTML <p id="hoge">要素だよ</p>
// jQuery $('#hoge').attr('class').split(" ")[0]; // _人人人人人人_ // > 突然の死 < //  ̄Y^Y^Y^Y^Y ̄
これは、クラス名が存在しない時attr('class')
がundefined
を返すのが原因っぽいです。
classNameだとクラス名が無くても''
と空文字列がくるのでsplitでエラーが起きないっぽい!
$(element).get(0)
とか$(element)[0]
とかしてやると良いようです。
// HTML <p id="hoge">要素だよ</p>
// jQuery $('#hoge').get(0).className.split(" ")[0]; // または $('#hoge')[0].className.split(" ")[0];
className
javascriptで要素についたクラスの1つめだけ取り出したい時は
element.className.split(" ")[0];
jQueryを使ってる時は
$element.get(0).className.split(" ")[0]; // または $element[0].className.split(" ")[0];
とすれば良いっぽい!
追記( 2014 11.11 )
JSで1つめのクラス名を取得する。 - かもメモ http://t.co/1yjLgZX3J0
最近のブラウザなら、element.classList[0]で取得できる
— amano (@amano225) 2014, 11月 8
最近のブラウザなら、
element.classList[0]
で取得できる っぽい!※ 試してない