如何获取html元素的类标签

时间:2012-07-14 20:42:28

标签: javascript jquery html css modernizr

我正在使用自定义的现代化配置,它选择了我在页面中使用的功能(并且只选择了那些功能)。

所以,我想简单地抓取页面<html>的className,这样我就可以查看有多少no-个前缀类(可能会检查classlist.match(/no-/g).length)并确定我的javascript是否应该放弃。

目前尚不清楚我是否应该使用

document.getElementsByTagName('html').className

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

document.documentElement.className

5 个答案:

答案 0 :(得分:27)

我会去:

document.documentElement.className;

因为不涉及任何函数的调用,所以没有像jquery这样的附加层。理想情况下,这是最干净,最快的。

答案 1 :(得分:4)

你可以使用jQuery hasClass`方法:

  

确定是否为任何匹配的元素分配了给定的类。

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

答案 2 :(得分:2)

如果使用普通JS,则等价物为:

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

答案 3 :(得分:1)

如果您在项目中使用jquery,为什么不使用这个:

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

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

答案 4 :(得分:0)

 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);