jQueryを使用してクラス名を取得したい
そしてそれがIDを持っている場合
<div class="myclass"></div>
this.className
はjqueryなしで動作します("myclass"
上記の例で返されます)
jQueryを使用してクラス名を取得したい
そしてそれがIDを持っている場合
<div class="myclass"></div>
this.className
はjqueryなしで動作します("myclass"
上記の例で返されます)
回答:
クラス以外の方法で要素をjQueryオブジェクトとして取得した後、
var className = $('#sidebar div:eq(14)').attr('class');
トリックを行う必要があります。ID用.attr('id')
。
イベントハンドラーまたは他のjQueryメソッドの内部にいる場合、要素はラッパーのない純粋なDOMノードであり、以下を使用できます。
this.className // for classes, and
this.id // for IDs
どちらも標準のDOMメソッドであり、すべてのブラウザでサポートされています。
if(className.indexOf(' ') !== -1){throw new Error('Uh-oh! More than one class name!');}
.attr('class')
して組み合わせるとif(className.indexOf('Class_I_am_Looking_For') > = 0)
、特定のクラスの存在を簡単に確認でき、それでも複数のクラスを処理できます。
if(className.indexOf('Class_I_am_Looking_For') > = 0)
マッチします"This_Is_Not_the_Class_I_am_Looking_For"
.hasClass()
要素に特定のがあるかどうかを確認する場合に使用することをお勧めしますclass
。これは、要素に複数のclass
チェックするのは簡単ではないためです。
例:
<div id='test' class='main divhover'></div>
どこ:
$('#test').attr('class'); // returns `main divhover`.
で.hasClass()
あれば、我々はテストすることができdiv
、クラスを持っていますdivhover
。
$('#test').hasClass('divhover'); // returns true
$('#test').hasClass('main'); // returns true
.is('.divhover')
注意してください、おそらく、あなたはクラスとサブクラスを持っています。
<div id='id' class='myclass mysubclass' >dfdfdfsdfds</div>
以前のソリューションを使用すると、次のようになります。
myclass mysubclass
したがって、クラスセレクターが必要な場合は、次のようにします。
var className = '.'+$('#id').attr('class').split(' ').join('.')
そしてあなたは
.myclass.mysubclass
ここで、上記のdivなど、同じクラスを持つすべての要素を選択する場合は、次のようにします。
var brothers=$('.'+$('#id').attr('class').split(' ').join('.'))
つまり
var brothers=$('.myclass.mysubclass')
または、2行のバニラJavaScriptで実装できます。
const { classList } = document.querySelector('#id');
document.querySelectorAll(`.${Array.from(classList).join('.')}`);
'.'+$('#id').attr('class').split(/[ \n\r\t\f]+/).join('.')
ため、さらに正確な式はです。(RegExpも受け入れます。).split()
'.'+$('#id').attr('class').split(/\s+/).join('.')
もっと簡潔になるでしょうね。それとも、私が考えていないものと一致しますか?
.attr('class').trim().split(...)
関数splitを使用してクラス名を抽出する場合は、予期しない結果をもたらす可能性のあるフォーマットのバリエーションの可能性を補正する必要があります。例えば:
" myclass1 myclass2 ".split(' ').join(".")
作り出す
".myclass1..myclass2."
正規表現を使用して、クラス名に使用できる一連の文字を照合したほうがよいと思います。例えば:
" myclass1 myclass2 ".match(/[\d\w-_]+/g);
作り出す
["myclass1", "myclass2"]
正規表現はおそらく完全ではありませんが、うまくいけば私のポイントを理解できます。このアプローチは、不十分なフォーマットの可能性を軽減します。
divのクラスを取得し、クラスが存在するかどうかを確認する場合は、簡単に使用できます。
if ( $('#div-id' ).hasClass( 'classname' ) ) {
// do something...
}
例えば;
if ( $('body').hasClass( 'home' ) ) {
$('#menu-item-4').addClass('active');
}
それを試してみてください
HTML
<div class="class_area-1">
area 1
</div>
<div class="class_area-2">
area 2
</div>
<div class="class_area-3">
area 3
</div>
jQuery
<script src="https://code.jquery.com/jquery-1.11.3.js"></script>
<script type="application/javascript">
$('div').click(function(){
alert($(this).attr('class'));
});
</script>
コードがある場合:
<div id="myDiv" class="myClass myClass2"></div>
jQueryを使用してクラス名を取得するには、単純なプラグインメソッドを定義して使用します。
$.fn.class = function(){
return Array.prototype.slice.call( $(this)[0].classList );
}
または
$.fn.class = function(){
return $(this).prop('class');
}
メソッドの使用法は次のとおりです。
$('#myDiv').class();
アタッチされたクラスの最初のクラスのみを返すネイティブメソッドelement.classNameとは異なり、クラスのリストを返すことに注意する必要があります。要素には複数のクラスが関連付けられていることが多いため、このネイティブメソッドではなく、element.classlistまたは上記のメソッドを使用することをお勧めします。
最初のバリアントはクラスのリストを配列として返し、2番目は文字列として返します-スペースで区切られたクラス名:
// [myClass, myClass2]
// "myClass myClass2"
もう1つの重要な通知は、両方のメソッドとjQueryメソッド
$('div').prop('class');
他の多くの要素を指すより一般的なセレクターを使用する場合、jQueryオブジェクトによってキャッチされた最初の要素のクラスリストのみを返します。このような場合、要素にマークを付ける必要があります。たとえば、いくつかのインデックスを使用して、クラスを取得します。
$('div:eq(2)').prop('class');
これらのクラスをどのように処理する必要があるかにも依存します。このIDを持つ要素のクラスリストにクラスをチェックするだけの場合は、メソッド「hasClass」を使用する必要があります。
if($('#myDiv').hasClass('myClass')){
// do something
}
上記のコメントで述べたように。ただし、すべてのクラスをセレクターとして取得する必要がある場合は、次のコードを使用します。
$.fn.classes = function(){
var o = $(this);
return o.prop('class')? [''].concat( o.prop('class').split(' ') ).join('.') : '';
}
var mySelector = $('#myDiv').classes();
結果は次のようになります。
// .myClass.myClass2
たとえば、特定の書き換えcssルールを動的に作成することもできます。
よろしく
これも機能します。
const $el = $(".myclass");
const className = $el[0].className;
JavaScriptまたはjQueryでクラス名を取得する最良の方法
attr()
属性関数は、属性を取得および設定するために使用されます。
クラスを取得
jQuery('your selector').attr('class'); // Return class
クラスが存在するかどうかを確認します
The hasClass() method checks if any of the selected elements have a specified class name.
if(jQuery('selector').hasClass('abc-class')){
// Yes Exist
}else{
// NOt exists
}
クラスを設定
jQuery('your selector').attr('class','myclass'); // It will add class to your selector
jQueryを使用してボタンのクリックでクラスを取得する
jQuery(document).on('click','button',function(){
var myclass = jQuery('#selector').attr('class');
});
jQueryを使用してセレクターにクラスがない場合は、クラスを追加します
if ( $('#div-id' ).hasClass( 'classname' ) ) {
// Add your code
}
要素を使用して2番目のクラスを複数のクラスに取得します
Change array position in place of [1] to get particular class.
var mysecondclass = $('#mydiv').attr('class').split(' ')[1];
parents()
。