2009-11-10 20 views
11

したがって、iframeを書き込むことができるまでsetIntervalを実行している次のコードがあります。jQueryで動的iframeを作成するより良い方法はありますか?

$('#testdiv').append($('<iframe id="testiframe"/>')); 
var t = setInterval(function(){ 
    if(document.getElementById('testiframe') !== 'undefined'){ 
     clearInterval(t); 
     $('#testiframe').contents().find('body').append('asd'); 
    } 
}, 15); 

基本的に、jQueryはiframe要素を作成し、DOMにロードします。しかし、iframeはすぐに利用できないので、直後に発生するようにコード化された追加のjQuery呼び出しがあります。このコードでは、新しいiframeが利用可能になるまで単純なインターバルチェックを行い、その内容に 'asd'を書き込みます。

私はiframeの作成にチェーンメソッドのさまざまな方法を試してみましたが、何も実際には機能しません。それはすべてタイミングの問題と思われます。私は$( '#testiframe')を試した。live( 'load'、function(){});それはまったく動作しません。

だから誰もこれについてよりクリーンな勧告を持っていますか?

+0

関連:http://stackoverflow.com/questions/205087/jquery-ready-in-a-dynamically-inserted-iframe – artlung

答えて

26

liveのない通常のイベントですか?

$('<iframe id="testiframe"/>').load(function(){ 
    $('#testiframe').contents().find('body').append('asd'); 
}).appendTo("#testdiv"); 
+0

これは素晴らしいです。 #testdiv要素にアタッチする前にイベント*を割り当てるのは私には起こりませんでした。振り返ってみると、ロードイベントをiframeにバインドせずにバインドできることを別途確認したので、考えてみました。 $( '