18

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

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

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

document.getElementsByTagName('html').className

或者

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

或者

document.documentElement.className
4

5 回答 5

39

我会去:

document.documentElement.className;

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

于 2012-07-14T21:03:12.700 回答
5

你可以使用jQuery`hasClass方法:

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

if ( $('html').hasClass('no-something')) {
  // do something here
}
于 2012-07-14T23:11:44.840 回答
2

如果使用纯 JS,则等价于:

document.getElementsByTagName('html')[0].className
于 2012-07-14T20:48:20.843 回答
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
  }
});

?

于 2012-07-14T20:46:58.800 回答
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);
于 2020-02-16T08:14:08.313 回答