1

私はよくjQueryで要素を表示/非表示にします。たとえば、最初のタブが表示され、他のタブはjavascriptで表示されるまで表示されない単純なタブ付きコンテンツ領域です。CSSを使用して最初に非表示にしたものを非表示にし(display:none)、JS以外のユーザーには表示されないため、JSで正しいものを表示することはお勧めできません。したがって、デフォルトでは、すべてを表示してから、JSで関連するものを非表示にします。

ただし、これを行うと、非表示の要素が読み込まれ、ドキュメントの準備ができたときにのみ非表示になります。どうすればこれを止めることができますか?優雅に劣化するが、ロード中に要素が表示されず、少し見苦しいように見えるためすぐに消える方法でこれを行う方法はありますか?

4

2 に答える 2

4

残念ながら、Javascriptの動作方法はこれは不可能のようです。最初にレンダリングされたフレームと、要素を非表示にするJavaScriptが実行されるまでには、常に1秒未満の時間があります 私はそれについて間違っていました、jQueryはそれを行うことができるようです。したがって、CSSはこのための最良の手段です。<noscript>幸いなことに、悪名高いタグ内に代替のCSSスタイルシートを追加できます。

<style type="text/css">
    #jquery-thing {
        display: none;
    }
</style>
<noscript>
    <style type="text/css">
        #jquery-thing {
            display: block !important;
        }
    </style>
</noscript>

JSFiddleのリンクは次のとおりです:http: //jsfiddle.net/kylewlacy/dbWuc/

于 2012-08-23T11:39:03.820 に答える
3

いくつかの考え...

jQueryがすべて別のファイルにあるのではなく、ページ全体に散らばっていてもかまわない場合は、$('#divToHide')。hide();を呼び出すことができます。要素が表示された直後。しかし、あまり良い習慣ではありません。ユースケースにもよりますが、主に5ページのパンフレットサイトを作成するデザイナー/テーマの場合は、自分に合ったものを選択する必要があります。

または、もう少し技術者の方は、.live()/.livequery()JSで要素の挿入をいじってキャッチし、すぐに非表示にすることをお勧めします。この投稿を参照してください新しいノードがDOMに挿入されたときに発生するjqueryイベントはありますか?

于 2012-08-23T11:38:11.790 に答える