2012-01-03 8 views
0

​​jquery関数にいくつかの問題があります。新しい要素がすべて読み込まれているときよりも隠しブロックにHTMLをあらかじめ読み込んでいますドームツリー。 私のスクリプト新しいHTML要素が完全に読み込まれたときを知る

var preloader = $(document.createElement("div")).attr('id', 'msgloader').css({ visibility: "visible"}); // visible is just for test it 
preloader.html(newHtml); // newHtml is a string with html elements like images table etc. 
$("body").append(preloader); 
preloader.load(function() { alert("div is ready"); }); 

である私はmiskateをする場所がわからない理由がわからないけどmsgloaderの新しいHTMLの準備ができて、完全にロードされたときにalert()メッセージをトリガーすることはありませんか?

+2

'preloader.html(newHtml);'その行の後に、要素が利用可能になります。イベントを聴く必要はありません。 –

答えて

0

​​は、サーバーからデータをロードするためのものです。ちょうど.append()いくつかのHTMLは、すぐに準備ができています。あなたのload()機能は、何も入力していないため警告を表示しません。load

2

文書の準備ができていない理由は何ですか? domを直接変更しているので、あなたの変更はすぐに利用できるはずです。そうすれば、すでにコードを追加した後に設定されているので、load()は起動しません。

0

load methodための注意事項を参照してください。loadイベントの

警告共通の課題開発者は(.LOADを使用して解決しようとする画像

で使用される) ショートカット機能を実行することですイメージ(または イメージのコレクション)が完全にロードされたとき。いくつかの注意点がありますが、これは注意する必要がある です。これらは次のとおりである:

  • それはそれはない
  • 前の画像SRCが同じSRCに設定されている場合は、WebKitの中で正しく発生しません一貫しても確実にクロスブラウザ
  • を動作しません。
  • はすでにブラウザのキャッシュに住んでいるイメージに起動するように中止することができるDOMツリーを正しくバブルアップ

それはときにすべての決定の特に信頼性の高い方法ではありません要素の内容の読み込みが完了しました。 overloaded load methodを使用してURLからHTMLを読み込み、ロードが完了したらDOMに追加することを検討することもできます(あるいは、DOMのDOMをすぐに追加することもできます)。

関連する問題