2012-07-14 51 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