【发布时间】:2011-02-24 16:53:09
【问题描述】:
我在这样的一页中有 2 个框架 (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(例如显示和隐藏)。
我见过severalquestionslikethis,他们建议如下
$(document).ready(function(){
$('#treeStatus').contents().find("#statusText").hide();
});
我不知道这是否适用于 iframe,但在我有简单框架的情况下,它似乎不起作用。代码放在 home.html 中
这是萤火虫控制台的一些输出
>>> $('#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 这只是我为 stackoverflow 创建的一个最小示例。实际应用完全不同。它比简单的状态栏更复杂。框架是必需的(不要问!)。
-
好的,不用担心。只是想我会补充一点(有些人不知道
position: fixed)。 -
你的答案是我用过的,因为我被卡住了。你也需要写下你的答案,而不是评论。 HTH!
标签: javascript jquery html frame