2016-09-01 71 views
0

如果我把一個iframe放在html body中,我的'on load'被調用。 但是當我附加一個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

如果您設置事件後追加它,它不會被稱爲 –

+0

@RoryMcCrossan這是不對的,因爲我瞭解你以前的評論。 https://jsfiddle.net/crLxp6j5/什麼需要我猜我是委託加載事件。但是,由於這個事件不起泡,他可以設置內聯onload屬性或捕獲它:http://jsfiddle.net/2u56bqno/ –

+0

@ A.Wolff好吧,我的壞 –

回答

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)); 
});