父页面调用iframe子页面easyui对象方法问题

发布于 2021-11-30 08:53:06 字数 3087 浏览 710 评论 3

我的需求是一个父页面里面有一个Iframe,iframe子页面有一个easyui-tabs。当父页面加载完成后,关闭子页面的一个tab页。我的代码如下:

父页面代码

<script>

var iframe = document.getElementById("myframe");

iframe.src="test.html";
if (iframe.attachEvent){
iframe.attachEvent("onload", function(){
settabclose();
});
}else{

iframe.onload = function(){
$('#myframe').height(window.frames.myframe.document.body.scrollHeight+2);
settabclose()
};
}
function settabclose()
{
var tabs1=$($(iframe)[0].contentWindow.document.getElementById('tb1'));
 abs('close',1);

tabs1.tabs('close',1);

</script>

子页面 就是一个tabs

<div class="easyui-tabs" style="width:700px;height:250px" id="tb1">

</div>

在父页面中是可以取得子页面tabs 对象的,但是

问题出在我一调用close 方法的时候easyui就会报错$.data() is undefined。

我换了一种关闭方式在子页面写一个方法

function closetest(title)
{
$('#tb1').tabs('close',title);
}

然后在父页面调用

window.frames.myframe.closetest("My Documents");

这样 是可以实现效果的,但是为什么第一种会报错,我百思不得其解,望高手解答

(PS:如果将iframe 改成panel 也是可以实现效果的,如果在父页面的settabclose方法中加入

var tabs1=$($(iframe)[0].contentWindow.document.getElementById('tb1'));
tabs1.tabs({onLoad:function(){alert(0);}});tabs就会重复加载,如下图所示

期待高手帮忙看看。谢谢

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

葬花如无物 2021-11-30 17:26:23

引用来自“con”的评论

var tabs1=$($(iframe)[0].contentWindow.document.getElementById('tb1'));   虽然取到的DOM元素是子窗口里面的,但生成jquery对象时调用的是父窗口的$,试试这样:var tabs1=$(iframe)[0].contentWindow.$("#tb1")

德意的啸 2021-11-30 17:04:55

引用来自“con”的评论

var tabs1=$($(iframe)[0].contentWindow.document.getElementById('tb1'));   虽然取到的DOM元素是子窗口里面的,但生成jquery对象时调用的是父窗口的$,试试这样:var tabs1=$(iframe)[0].contentWindow.$("#tb1")

水水月牙 2021-11-30 11:18:47

var tabs1=$($(iframe)[0].contentWindow.document.getElementById('tb1'));   虽然取到的DOM元素是子窗口里面的,但生成jquery对象时调用的是父窗口的$,试试这样:var tabs1=$(iframe)[0].contentWindow.$("#tb1")

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文