2011-12-06 167 views
1

由于各种原因,我试图从来自iframe的函数中删除父div。需要从dom中删除的div(不隐藏)具有分配给它的唯一标识。从iframe的父窗口中删除ID

所以说我有这个div父:

<body> 
    <div id="foo_123" class="bar">STUFF</div> 

在iframe从该网页我有这种抓住这一独特ID

var curWin = window.top.document.getElementsByClassName('bar')[0].id; 

所以在这个例子中产生curWin = foo_123

现在在获取该变量的同一个函数中,我需要能够从父页面完全删除该div。我有原型一起工作,我想这样做

$(curWin).remove(); 

但没有奏效它只是给错误$(curWin) is null。但是,如果我回应curWin,它确实为我提供了正确的ID。

关于如何做到这一点的任何想法。我试着用removeChild太多,但我又是不知道如何做到这一点时,它是<body>的父文档中的孩子。

请从告诉我的jQuery如何真棒是避免。我知道这将是简单的豆类,但我没有这个项目的奢侈品。

+0

Forgiv因为我一直在用jQuery,但如果'curWin'包含元素id的字符串,你不想使用'document.getElementById(curWin).remove()'吗? –

+0

@Neurotrace,'.remove'是jQuery糖,普通元素没有。通常删除一个没有任何框架的元素,你会做'elemRef.parentNode.removeChild(elemRef);' – Esailija

回答

0

如果你在上面的窗口里有原型做:

top.$(curWin).remove();

它会寻找"foo_123"在顶部窗口(如果存在),而不是iframe(它不存在)

+0

啊啊啊!一个小时在桌子上敲着我的头=没有结果。在SO = 5分钟后成功!谢谢。我会尽快接受。 – Zac

0

使用parent.document,不window.top。此外,抓住整个元素,而不是ID:

var curWin = parent.document.getElementsByClassName('bar')[0]; 
curWin.parentNode.removeChild(curWin); 

附加信息:

MDN iframe docs报价:

从框架内,脚本就可以得到一个参考通过window.parent父 窗口。

参见,.removeChild()

0

传递原型的元素引用,会更快,然后重新搜索,并可能会工作:

var curWin = window.top.document.getElementsByClassName('bar')[0] 

然后,您可以:

$(curWin).remove(); 
0

我发现去从父元素通的iFrame是这样的(请注意您的iframe将有一个ID,如图所示我用过的最好方法#iframID)

x=document.getElementById("iframID"); 
y=(x.contentWindow || x.contentDocument); 
$(y.document).find("#foo_123").remove(); 
0

尝试:

 
var curWin = parent.top.document.getElementById('yourDivId'); 
$(curWin).remove();