2011-01-27 6 views
1

jQuery load()関数を使用して、あるdivのコンテンツを別のdiv内にロードしています。これはブラウザ上に表示されますが、find()関数を使用しようとすると、DOMにまだ表示されないので、何も見つかりません。私はロードされた直後、そしてfind()を使う直前に、divのHTMLコンテンツを印刷しようとしました - それはdivの前にあったHTMLを示していますコンテンツがロードされました。DOM内にdivがロードされていません

DOMにロードされていない場合は、ロードされたコンテンツの特定のIDをどのように探しますか?

おそらく私はlive()とカスタムイベントでこれを回避できますか?

はここで何が起こっているのいくつかの非常に単純化されたコードです:

$('#serverctl-server-dc').load('query.php?m=serverctl&q=shelf_view'); 
console.log($('#srv-1111').html()); 

生成されたソースは、#1 SRV-1111の要素を含んでいますし、それがHTMLを含んでいます。私はコンソールで何も得ていないよ。

+1

あなたが共有できれば/コードを表示それは助けになるでしょう。 –

答えて

0

私は$(「#SRV - 」+ maskId)を操作するために必要な要素を、ので、私が実装されてきたことは魔法だった - 少なくとも私にとって:

$('#serverctl-server-dc').live('getId', function(){ 
    $('#srv-'+maskId).parent().css('border','4px solid #AF0200'); 
}); 

$('#serverctl-server-dc').load('query.php?m=serverctl&q=shelf_view', function(){ 
    $('#serverctl-server-dc').trigger('getId'); 
}); 
0

原則として、あなたの要素を見つけるはずですが、行動の順序を検証する必要があります。

正確にfind関数を使用するのはいつですか?

Chromeデベロッパーツールを使用すると、読み込まれた元のファイルではなく、現在操作されているHTMLが表示されます。

さらに詳しい説明が必要な場合は、コードを投稿してください。 幸運を祈る!

0

firebugを使用してスクリプトをデバッグできます。 IDのコンテンツ検索をロードした後、実際にそこにいるかどうかを確認します。

HTH

3

"load"は非同期です。処理をロード要求のコールバック関数パラメーターに入れる必要があります。そのときだけ、DIVの内部要素が利用可能であることを確かめることができます。

はい、新しい要素でイベントを処理する場合は、「live()」を使用できます。新しい要素を操作したいだけなら(CSSでスタイルを変更する以外にも)、たとえばテキストの一部を別のものに置き換えたり、アニメートしたりすると、それらが読み込まれるまで待つ必要があります。

+0

+1 ..コールバックを使用するのは確かに正しい方法です。公式ページhttp://api.jquery.com/load/の後に「このポスト処理の後に実行されたコールバック実行された " –

関連する問題