2016-09-01 17 views
0

iframeをhtmlボディに配置すると、 'load'が呼び出されます。 しかし、bodyにiframeを追加すると、呼び出されません。 それはなぜですか、それについて何ができるのですか?jquery on( 'load'、...)が呼び出されない

$('iframe').on('load', function() { 
    console.log("loading iframe"); 
}); 

$body.append('<iframe id="frame" src="http://lalalala.nl/index_of/content?F=2"></iframe>'); 
+0

イベントを設定した後、それを追加する場合、私はあなたの以前のコメントを理解してそれは正しくありません@RoryMcCrossan、それは –

+0

と呼ばれることはありません。 https://jsfiddle.net/crLxp6j5/ OPが必要なのは、ロードイベントを委任することだと思います。しかし、このイベントはバブルではないので、彼はインラインonload属性を設定するか、それをキャプチャすることができます:http://jsfiddle.net/2u56bqno/ –

+0

@A.Wolff ok、悪い –

答えて

2

問題は、あなたが$('iframe')を呼び出すときのiframeがまだ存在していないということですので、あなたは、任意の要素に結合していません。操作の順序を逆にする。

$body.append('<iframe id="frame" src="http://lalalala.nl/index_of/content?F=2"></iframe>'); 
$('iframe').on('load', function() { 
    console.log("loading iframe"); 
}); 

iframeを切断要素として作成し、バインドしてから追加することができます。

$('<iframe id="frame" src="http://lalalala.nl/index_of/content?F=2"></iframe>').on('load', function() { 
    console.log("loading iframe"); 
}).appendTo($body); 
0

最初のiframe要素を作成し、それを追加してみてください。

$(document).ready(function() { 
    var iframe = $('<iframe id="frame" "src="..." />').on('load', function(){ 
    alert('loaded'); 
    }); 

    $('body').append($(iframe)); 
}); 
関連する問題