jQuery:如何在父级上隐藏框架?
我的主页面包含框架集中的多个框架。 其中一个框架是带有按钮的工具栏,我希望能够按下该工具栏上的按钮,它将隐藏主页面上的一个框架。
我已经从工具栏框架中尝试了以下内容,但它不起作用…
$(document).parent.$("#other_frame").hide("slow");
我真的很喜欢jQuery,在搜索网络后我几乎迷失了。
谢谢您的帮助。
编辑:我的完整主页
就我对事物的理解而言,你需要执行像隐藏在div上的操作。 基本上,无论你想要影响什么,都需要响应css display属性。 如果你必须使用框架,我强烈建议你改用div,然后你需要编写一些实际上从DOM中移除框架的jQuery,而不是仅仅试图隐藏它。
$(document).parent.$("#other_frame").hide("slow");
啊。 这里有几个问题。 首先,它是parent()
来调用该函数。 但是,jQuery无法使用parent()
将文档跳出到父文档。 要向上导航框架,您需要window.parent
属性:
window.parent.$('#other_frame').hide('slow');
但是要使其工作,您需要在父文档中加载jQuery的副本,以便您可以调用它的$
。 (从另一个文档的$
副本中编写一个文档通常不起作用; jQuery并不是专门为跨框架脚本编写的。)
它不起作用的最后一个原因是你不能真正编写脚本/样式框架集页面。 浏览器可能忽略这些特殊页面中的脚本,并且许多CSS属性不适用于帧(包括display: none
,jQuery的hide()
使用)。
尝试使用iframe
而不是frame
s来获得更易于编写脚本的页面。 (获得框架式layout: fixed
东西在IE6中工作将是一个痛苦。)或者,如果你可以管理它,在一个文档中完成所有操作将更加易于管理。 跨框架脚本有许多微妙和恼人的陷阱。
我这样做了,没有jquery,我在主框架中调用了go()函数的“链接”。 go函数展开或折叠“FrameSetMain”的第一帧。 我在ie8和firefox 3.6上测试过。
var oggFS = parent.document.getElementById("FrameSetMain"); var startingWidth = oggFS.cols var w = 0; function collapse(min) { s = oggFS.cols.split(","); w = parseInt(parseFloat(s[0]) / 2); oggFS.cols = w + ",8,*"; if (w>min) { setTimeout("collapse("+min+")",50); } else { oggFS.cols = min + ",8,*"; document.getElementById("link").title = "Show menu"; } } function expand(max) { s = oggFS.cols.split(","); if (s[0]==0) s[0]=5; w = parseInt(parseFloat(s[0]) * 2); oggFS.cols = w + ",8,*"; if (w
试试这个:
if(window.parent.document.getElementById("myFrameset").cols!="40px,*"){ $('#left-title-txt').hide(); window.parent.document.getElementById("myFrameset").cols="40px,*"; $(this).css('background-image','url(img/openleft.png)'); }else{ $('#left-title-txt').show(); window.parent.document.getElementById("myFrameset").cols="20%,80%"; $(this).css('background-image','url(img/hideleft.png)'); }
您可以使用以下内容修改框架集:
//hide var orig = $('#myFrameSet', top.document).attr('rows'); $('#myFrameSet', top.document).attr({'rows':'0,*'}) .... //show $('#myFrameSet', top.document).attr({'rows':orig}) orig = null;
您也可以为cols执行此操作。