web-dev-qa-db-ja.com

HTML要素のクラスタグを取得する方法

私のページで採用している機能(およびそれらの機能のみ)を選択したカスタムモダナイザー構成を使用しています。

したがって、ページの_<html>_のclassNameを単純に取得して、_no-_接頭辞付きクラスがいくつあるかを確認できるようにします(多分classlist.match(/no-/g).length)を確認し、私のJavaScriptがただあきらめるべきかどうかを決定します。

使うべきかどうかわからない

_document.getElementsByTagName('html').className
_

または

_$('html').attr('class')
_

または

_document.documentElement.className
_
12
Steven Lu

私は行きます:

document.documentElement.className;

関数の呼び出しを含まないため、jqueryのような追加のレイヤーもありません。理想的にはこれが最もクリーンで最速です。

27
ZER0

jQuery hasClass `メソッドを使用できます:

一致した要素のいずれかに特定のクラスが割り当てられているかどうかを確認します。

if ( $('html').hasClass('no-something')) {
  // do something here
}
4
undefined

プレーンJSを使用する場合、同等のものは次のようになります。

document.getElementsByTagName('html')[0].className
2
Martin

プロジェクトでjqueryを使用している場合、なぜこれを使用しないのか:

var classList = $("html").attr('class').split(/\s+/);
var prefix = 'no-';

$.each( classList, function(index, item){
  if (item.substring(0, 2) === prefix) {
    //do something
  }
});

1
Besnik
 var allClasses = [];
 var allElements = document.querySelectorAll('*');

 for (var i = 0; i < allElements.length; i++) {
     if (allElements[i].hasAttribute("class")) {
        var classes = allElements[i].className.toString().split(/\s+/);
        for (var j = 0; j < classes.length; j++) {
             var cls = classes[j];
             if (cls && allClasses.indexOf(cls) === -1)
                allClasses.Push(cls);
        }
     }
 }

 console.log(allClasses);
0
Community Ans