2012-07-14 23 views
12

我正在使用自定义的modernizer配置,该配置选择了我在页面中使用的功能(仅限于那些功能)。如何获取html元素的类标记

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

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

document.getElementsByTagName('html').className 

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

document.documentElement.className 
+0

我看不出有任何理由不使用任何的三个。 – Kyle 2012-07-14 20:45:54

+2

他们都工作,但你可能有第一和第三的跨浏览器问题。第二个通过jQuery的抽象。 – 2012-07-14 20:46:15

+2

任何将工作,除了您可能需要取消引用'getElementsByTagName()'一个,因为它返回一个节点列表:'document.getElementsByTagName('html')[0] .className' – 2012-07-14 20:46:40

回答

24

我会去:

document.documentElement.className; 

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

+0

目前使用这个。 – 2012-07-14 21:12:07

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

2

如果使用普通JS,相当于将是:

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

请制作'普通香草'。我以为我读了另一个js库,直到我阅读了代码行! VanillaJS,听起来像一个图书馆! – 2012-07-14 20:49:11

+0

我会引用[wikipedia](http://en.wikipedia.org/wiki/Vanilla)。 “香草”主要用于调味冰淇淋。冰淇淋最常见的口味是“香草味”,因此大多数人认为它是“默认”味道。通过类推,术语“香草”有时被用作“简单”的同义词。 – Martin 2012-07-14 20:54:19

+0

我会说'纯JS'。 (并使用'document.getElementsByTagName('html')[0] .className')。 – 2012-07-14 21:07:25

3

你可以使用jQuery hasClass`方法:

确定是否有任何匹配的元素被分配给定的类。

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

这只有在您已经知道类名时才有效,这与所要求的不同。 – Teepeemm 2015-12-10 21:19:00