我在html页面myPage.html中有一个iFrame,在其中我正在显示另一个页面otherPage.html。 otherPage.html是一个包含许多元素的复杂页面。我只想在iFrame中显示一个div。所有其他应保持隐藏。我怎样才能做到这一点?
我尝试使用jQuery中的.load()函数代替iFrame。但是由于某种原因,页面无法加载。 otherPage.html是从IIS服务器提供的,而页面是完全由Javascript构造的。我不知道为什么在使用load()函数时什么也没加载。
我将如何实现这一目标?
更新:
以下是一些说明:
我试图在myPage.html上使用.load()函数。无论如何,在摆弄之后,我发现以下工作有效:
对于我要显示的div,我隐藏了它的所有兄弟姐妹,还隐藏了其父代的所有兄弟姐妹。以下jQuery语句似乎可以做到这一点:
$(“#myFrame”)。contents()。find(“#chart1”)。show()。parentsUntil('body')。andSelf()。siblings()。hide();
我现在只有一个问题。当我执行以下操作时:
在Firefox中加载myPage.html(它还会在
iframe)
手动打开萤火虫并输入
$(“#myFrame”)。contents()。find(“#chart1”)。show()。parentsUntil('body')。andSelf()。siblings()。hide();
似乎隐藏了其他所有内容。
但是,然后我想使其自动化。换句话说,当我加载myPage.html时,我希望它加载iFrame的内容。加载iFrame内容后,我想运行以下脚本:
$(“#myFrame”)。contents()。find(“#chart1”)。show()。parentsUntil('body')。andSelf()。siblings()。hide();
我无法使它正常工作。到目前为止,我已经尝试了以下两种方法:
$(document).ready(function() {
$("#myFrame").ready(function () {
$("#myFrame").contents().find("#chart1").show().parentsUntil('body').andSelf().siblings().hide();
});
});
我也尝试使用
$("#myFrame").load(function () {
代替。但是在这两种情况下,脚本都不会隐藏其他元素。因为,当我在控制台中手动使用该脚本时,该脚本可以工作,因此我假定该脚本在加载所有元素之前已经以某种方式运行。请给我您的想法。
最佳答案
用$("#myIFrame *").hide();
之类的东西在iFrame中隐藏所有内容,也可以将css display属性设置为none。
使用CSS选择器,仅重新显示所需的div。如果您的div有一个id,这很简单:$('#myDiv').show();
如果div没有ID,请查看是否可以给它一个ID。如果无法为您的div创建ID,请尝试为其父ID指定一个ID /类。
如果没有ID选项,您可能还会发现:nth-child()
这样的选择器很有用。