2016-09-01 84 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)); 
});