クラス属性の2番目のクラス名を取得する方法を見つけようとしています。
<div class="something fooBar"></div>
「fooBar」という名前の2番目のクラスを取得するにはどうすればよいですか?
特定のクラスを追加、削除、チェックできることは知っていますが、2番目のクラスを変数に取得する方法に関するドキュメントが見つかりませんでした。
次のようにsplit
を使用できます。
alert($('#divID').attr('class').split(' ')[1]);
すべてのクラスを取得するには、代わりにこれを行うことができます:
var classes = $('#divID').attr('class').split(' ');
for(var i=0; i<classes.length; i++){
alert(classes[i]);
}
詳細:
// alerts "8"
alert($('<div class="something 8"></div>').attr('class').split(' ')[1]);
これは、div IDを参照して行う方法です。
$(document).ready( function () {
alert($('#yourDivID').attr('class').split(' ')[1]);
});
Split関数を使用すると、指定した区切り文字で文字列を分割できます。これにより、分離された値の配列が返されます。この場合、クラス名の配列を返します。
他の文字列メソッドを分割するためのリファレンス http://www.javascriptkit.com/javatutors/string4.shtml
クラスにアクセスするには、次のjQueryセレクターと関数を調べる必要があります。
セレクター
http://api.jquery.com/class-selector/ 指定されたクラスを持つdom要素を選択します
http://api.jquery.com/has-selector/ 指定されたセレクターを持つdom要素を選択します
関数
http://api.jquery.com/addClass/ jQueryオブジェクトにクラスを追加するメソッド
http://api.jquery.com/removeClass/ jQueryオブジェクトのクラスを削除するメソッド
http://api.jquery.com/toggleClass/ クラスをjQueryオブジェクトに切り替えるメソッド
http://api.jquery.com/hasClass/ jQueryオブジェクトに指定されたクラスがあるかどうかを確認するメソッド
http://api.jquery.com/attr/ jQueryオブジェクトの属性を取得するメソッド
編集: 素敵なチートシート
別の方法として、状態を追跡するためにdata- * html属性を使用することを常にお勧めします。たとえば、$( "div.example")。data( "active")
クラス属性の値を取得して、スペースで分割できます。
secondClass = element.className.split(' ')[1];
これは正しくありません。クラスが複数のスペースを区切り、2番目のクラスを取得した場合、空になります。例:
<div class="something fooBar"></div>
var classes = $('div').attr('class').split(' ');
alert('classes: ' + classes + '; length: ' + classes.length );
// classes: something,,,fooBar; 4
私は次のコードを使用します:
/*
* el - element
* num - class number
*/
function getNumClass(el, num) {
var classes = el.split(' ');
var newclasses = [];
var ret;
for (var i = 0; i < classes.length; i++) {
ret = $.trim(classes[i]);
if(ret.length > 0) {
newclasses.length += 1;
newclasses[newclasses.length-1] = ret;
}
}
if (num > newclasses.length) return false;
return newclasses[num - 1];
}