2009-04-07 40 views
236

我有一个iframe,以访问父元素我实现下面的代码:如何使用jquery访问iFrame父页面?

window.parent.document.getElementById('parentPrice').innerHTML 

如何使用jQuery得到同样的结果?
更新:或者如何访问使用jQuery的iFrame父页面?

+0

参见http://stackoverflow.com/questions/12114243/retrieving-a-documents-parent-iframe-in-jquery/36445098#36445098 – 2016-04-06 08:09:13

回答

439

要找到iFrame中使用的父:

$('#parentPrice', window.parent.document).html(); 

为$()包装的第二个参数是要搜索的内容。这默认为文档。

+3

好大我能帮上忙。 – 2009-04-07 17:51:53

+3

很好的答案,节省了我的时间,谢谢:) – 2009-04-07 17:52:54

+16

酷 - 你在感谢你之前表示感谢。 StackOverflow可能存在时区问题? – belugabob 2010-03-19 08:49:03

36

如何使用jQuery

window.parent.document访问iFrame的父页面。

jQuery是一个位于JavaScript之上的库,不是完全替代它。你不必用涉及$的东西来替换每一个JavaScript表达式。

+6

+1。 jQuery很棒,但很多简单问题的答案似乎都是'使用jQuery'。如果你正在加载图书馆,很好,但不要加载它一项任务。此外,人们似乎对JS perf有所担忧,然后在JS之上使用API​​来在没有API的情况下轻松地完成任务(并且可能更快)。 – 2009-04-07 18:26:15

+1

@Grant尽管我梦想jQuery成为浏览器内部的本地代码。 – 2011-04-29 04:07:55

+3

@Blowski:那是我的噩梦!jQuery包含很多非常复杂和脆弱的“执行我的意思”代码,这些代码完全不适合放入官方API。 – bobince 2011-04-29 21:07:27

5

在父窗口放:

<script> 
function ifDoneChildFrame(val) 
{ 
    $('#parentPrice').html(val); 
} 
</script> 

和IFRAME SRC文件放:

<script>window.parent.ifDoneChildFrame('Your value here');</script> 
3

是啊,对我的作品也是如此。

注:我们需要使用window.parent.document

$("button", window.parent.document).click(function() 
    { 
     alert("Functionality defined by def"); 
    }); 
4

它的工作对我来说几乎没有扭转。 在我的情况下,我必须从POPUP JS到PARENT WINDOW窗体填充值。

所以我用$('#ee_id',window.opener.document).val(eeID);

优秀!

2

在这里可能会有点晚,但我刚刚发现了这个奇妙的jQuery插件https://github.com/mkdynamic/jquery-popupwindow。它基本上使用一个onUnload回调事件,所以它基本上监听关闭子窗口,并在那个时候执行任何必要的事情。因此,真的不需要在子窗口中写入任何JS来传递回父项。

8

如果你需要找到父文档中的jQuery实例(例如,调用由插件提供的效用函数)使用这些语法之一:

  • window.parent.$
  • window.parent.jQuery

实施例:

window.parent.$.modal.close(); 

jQuery被附加到window对象,这就是window.parent

+0

我正在使用我的iframe像用户控件。这让我保持干净利落。 – 2015-12-26 17:30:02

3

您可以通过使用window.parent这样从一个iframe中访问父窗口的元素:

// using jquery  
window.parent.$("#element_id"); 

这是一样的:

// pure javascript 
window.parent.document.getElementById("element_id"); 

如果你有一个以上的在嵌套的iframe你想访问最顶级的iframe,那么你可以这样使用window.top

// using jquery 
window.top.$("#element_id"); 

这是一样的:

// pure javascript 
window.top.document.getElementById("element_id"); 
+0

这一个为我工作。谢谢 – 2016-07-01 10:32:42

0

有多种方法可以做到这些。

I)直接获取主要父级。例如:

。我想取代我的孩子页面的iframe,然后

var link = '<%=Page.ResolveUrl("~/Home/SubscribeReport")%>'; 
top.location.replace(link); 

这里top.location直接得到父母。

II)由一赠父之一,

var element = $('.iframe:visible', window.parent.document); 

在这里,如果你有一个以上的iframe,然后指定活动或可见的。

你也可以做到像这些为获得进一步的父母,

var masterParent = element.parent().parent().parent() 

III)的标识符得到父母。

var myWindow = window.top.$("#Identifier") 
相关问题