2013-04-15 7 views
5

私はCSSの枠線を持つ要素を持っています。問題は、要素がjQueryによって内容が塗りつぶされるまで要素が空であることですが、境界線はCSSによって最初から描画されます。 のように何かできるようにしたいのですが、 を表示する準備ができるまで要素の表示を非表示にしてから、要素と境界線を一度に表示してください。jqueryに "element ready"関数がありますか?

これを実現する方法はありますか?

編集:コンテンツを表示するためのコードが

$(window).load(function() { 

} 
+0

とき要素を表示したいですか?特定のイベントですか? – PSL

+0

私の編集はそれに答えますか? – byronyasgur

答えて

14

方法あなたはdisplay:none;に要素のCSSを設定することになる試みることができる1

一つの方法の内側に収容されています。これにより要素が非表示になり、次の関数を呼び出すと要素がDOMの負荷で表示されます。 jQueryの実行後は、コンテンツの突然のジャンプが存在しますので、display:none;ページ

上の要素の痕跡がないことを意味するので

$(document).ready(function() { 
    // Put all of jQuery code in here 
    $("element").show(); // substitute element for whatever is needed 
}); 

しかし、私は、この方法をお勧めしません方法2

私の意見では最も良い方法はvisibility:hiddenを使用することです。これは、要素が通常表示されるスペースを引き起こしますが、要素の代わりに空白があります。このようにして、ページが読み込まれると、急激なコンテンツのジャンプはありません。あなたは、このメソッドを使用する場合は、.css()メソッドを使用する必要があります、.show()は基本的にdisplay:block;への要素のCSSを設定しているので、だから、コードはこれらのメソッドの両方のために、この

$(document).ready(function() { 
    // Put all of jQuery code in here 
    $("element").css("visibility", "visible") // substitute element for whatever is needed 
}); 

のようになります、CSSはなります要素を非表示にし、この関数は実行前にDOM全体がロードされるまで待ちます。

+0

OPはカスタムコードを 'show()'のように追加するだけです。 –

+0

+1私はこれが好きですが、これが1つの要素だったら、おそらくCSSの可視性の代わりにインライン 'style = 'display:none''を設定するだけです。 – AaronLS

+0

私はwindow.loadの内側にdoc.ready stuffを置くことができますか、それは外に置かなければなりません。実際には、同じロードブロック内に他の関連するものがたくさんあるので、元のコードの横にコードを残したいと思っています。 – byronyasgur

2

あなたは隠されたdisplay:none;

のクラスを削除すると、あなたのタイトルの質問に答えるために境界線を取得するスタイルを追加するためのjQuery addClassを使用するか、または多分removeClassことができ、それはあなたが探しているdocument.readyです!

0

あなたは、したがって、上記の

$(function(){ 
    // your code here 
}); 

DOMがロードされたときに実行されますを使用することができます。今あなたがする必要があるのは、visibility:hiddenがCSSに設定されている要素を表示することだけです。

+0

display:noneを使うと、要素は実際にロードされません。このため、多くの人々が可視性を推奨しています。 display:noneはdom空間を占有せず、visibility:hiddenとopacity:0はどちらも行います。 –

-2

.css()を試しましたか?要素のCSSを変更することができます。 続きを読むhere

最初は非表示に設定してから削除してください。

+0

私は知っているが、実際には私の質問は時間/それを時間を計る方法です、ありがとう – byronyasgur

+0

私は参照してください。コーディ・グルードナーの答えが行く方法です! – Doon

2

最初にアイテムを非表示にします。いくつかのイベントが要素にいくつかのコンテンツ

.... 
....//some code that fills in your content 
... 
$('selector').show(); 
.... 
.... 
0

準備であなたのdivに埋め他のいくつかのセクションで

$(function(){ 
    $('selector').hide(); // Or you can just have display:none 
    }); 

動作します:

$(document.getElementsByTagName('div')[0]).ready(function() { 
// do stuff when div is ready 
0

はこれを試してみてください:

$('#element').bind("DOMSubtreeModified", function() { 
    //do stuff 
}); 
+0

控除、https://stackoverflow.com/questions/6659662/why-is-the-domsubtreemodified-event-deprecated-in-dom-level-3 – Lodewijk

関連する問題