2010-12-15 75 views
2

我试图在iframe加载新页面(可能通过用户单击链接)触发的父级上设置事件。当iFrame中的新页面加载时发生jQuery事件

HTML:

<iframe name="posts" id="posts" src="edit.php"> 

JS:

$(document).ready(function() { 
    $('iframe#posts').live('load', function() { 
     console.log('live'); 
    }); 
}); 

的问题是,console.log()声明从未被触发。我怎样才能实现我想要做的?

回答

1

我最好的猜测是iframe上的'load'事件在文档'ready'事件之前触发,这意味着处理程序安装得太晚了。您可能必须在iframe元素中使用旧式的onload

或者您可以将$('iframe#posts').live()代码片段放在顶级脚本中,而不是放在就绪处理程序中。

+1

老派''伟大的工作。我尝试将'.live()'调用放在全局范围内,但它仍然没有做任何事情。 – ggutenberg 2010-12-15 17:54:04

+0

@dosboy是有道理的,如果丹的猜测是正确的。 iframe仍然会在文档之前触发。 – cregox 2011-04-15 21:21:03

2

解决问题的最简单方法是让您的iframe使用jQuery创建。

$(document).ready(function() { 
    $("<iframe />").attr({ 
     id: "posts", 
     src: "edit.php" 
    }).load(function() { 
     console.log('live'); 
    }).appendTo("body"); 

此问题已被asked here before

2

我使用的方法是

<iframe onload="hide_html_player_contents_loading();" ...../> 
+0

Sue 2011-04-05 15:50:31

相关问题