出于各种原因,我一直试图从iframe中删除一个父div。需要从dom中删除的div(未隐藏)具有分配给它的唯一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它确实为我提供了正确的身份。
关于如何做到这一点的任何想法。我也尝试使用removeChild
但是当我是父文档中<body>
的孩子时,我不知道该怎么做。
请不要告诉我jQuery有多棒。我知道这将是简单的豆类,但我没有这个项目的奢侈品。
答案 0 :(得分:0)
使用parent.document
,而不是window.top
。另外,抓住整个元素,而不是ID:
var curWin = parent.document.getElementsByClassName('bar')[0];
curWin.parentNode.removeChild(curWin);
其他信息:
从框架内部,脚本可以获得对父项的引用 窗口通过 window.parent 。
答案 1 :(得分:0)
如果您在顶部窗口中有原型,请执行以下操作:
top.$(curWin).remove();
它将在顶部窗口(它存在的位置)中查找"foo_123"
而不是iframe(它不存在的地方)
答案 2 :(得分:0)
传递Prototype的元素引用,然后更快然后重新搜索并且可能会起作用:
var curWin = window.top.document.getElementsByClassName('bar')[0]
然后你可以:
$(curWin).remove();
答案 3 :(得分:0)
我发现通过iFrame从父级中获取元素的最佳方法是这样的(注意你的iframe会有一个id,如图所示,我使用#iframID)
x=document.getElementById("iframID");
y=(x.contentWindow || x.contentDocument);
$(y.document).find("#foo_123").remove();
答案 4 :(得分:0)
尝试:
var curWin = parent.top.document.getElementById('yourDivId'); $(curWin).remove();