2011-12-06 90 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();