2013-07-03 4 views
14

DOMのbody要素にクラスを追加しようとしています。とてもシンプルで、body要素自体が素早くロードされているため(少なくとも、DOMに埋め込まれた要素よりも素早くロードすると思うでしょう)、本当にjQuery Readyイベントがそのような簡単な仕事ですか?ボディにスタイルを追加するときに、このクラスにアタッチされた別のCSSスタイルを追加すると効果が現れるため、このスタイルを「フリッカー」効果を避けるために探しています。私のような何かを行うことができますDOMの本体にCSSクラスを追加する安全かつ迅速な方法

jQuery(window.document).ready(function() { 
    jQuery("body").addClass("home"); 
    }); 

をしかし、より速く、まだ安全な方法はありますか?そのjQueryのまたはネイティブのJavaScript

+1

ための私は「安全」とは何を意味するのかわからない - 完全に安全で速い(コンテンツの量に応じてどのくらい速くなるか)。私が通常行うことは、ちらつき効果を避けるために、CSSでボディを隠し、すべてのスクリプトが実行された後にjQueryで表示することです。要素が他の要素のサイズに基づいてサイズが決められている場合など、時折スリップしますが、これらのスクリプトは本文を示す行の後に移動する必要があります。 – ClarkeyBoy

+0

最も安全で速い方法は、HTMLに入り、 ''要素 –

+0

にクラスを追加することです。確かに、最も早くて安全な方法は、body_タグに入れることです! – Alnitak

答えて

39
document.body.className += ' ' + 'home'; 

Performance comparisionaddClassclassListclassName

(PSLさんのコメントに基づいて)更新

か新しいものdocument.body.classList.add("home");

+4

+1これは、 – PSL

+11

に入力しようとしていたか、新しいもののために 'document.body.classList.add(" home ");' – PSL

+1

''の中にあることを確認してください – Dharman

1

右の場合、私は、スクリプトタグを作成することができ、開口部bodyタグの後に気にしない:

<body> 
<script> 
    $('body').addClass('home') 
</script> 
<!-- HTML content bellow --> 
</body> 

唯一の条件は、jQueryのはheadにロードされていることです。

関連する問題