我在一个页面中有两个框架,就像这样(home.html)
<frameset rows="50%, 50%">
<frame id="treeContent" src="treeContent.html" />
<frame id="treeStatus" src="treeStatus.html" />
</frameset>
然后在一个框架 (treeStatus.html) 中,我有类似于以下内容:
<body style="margin: 0px">
<div id="statusText">Status bar for Tree</div>
</body>
我希望能够通过jQuery从顶级窗口来操作位于子框架中的div(例如显示和隐藏)。
$(document).ready(function(){
$('#treeStatus').contents().find("#statusText").hide();
});
我不知道这是否适用于iframes,但在我的情况下,我有简单的frames似乎不起作用。 代码位于home.html内。以下是来自Firebug控制台的一些输出。
>>> $('#treeStatus')
[frame#treeStatus]
>>> $('#treeStatus').contents()
[]
>>> $('#treeStatus').children()
[]
那么我如何从顶层框架访问框架元素?我有什么遗漏吗?
回答
结合这两个答案,正确的方式是:
$('#statusText',top.frames["treeStatus"].document).hide();
为了使这个生效,除了id以外,框架必须具有name属性,就像这样:
<frameset rows="50%, 50%">
<frame id="treeContent" src="treeContent.html" />
<frame name="treeStatus" id="treeStatus" src="treeStatus.html" />
</frameset>
position: fixed
)。 - alex