小伙伴为了性能,把创建DOM过程存放在内存中,大致如下
function A(){
if(!this.dom){
this.dom = this.create()
this.bindEvent()
this.append()
}
else {
/* OOXX */
this.append()
}
}
A.prototype.create = function(){/* 创建DOM对象 append到右侧iFrame */}
A.prototype.append = function(){/* 把this.dom追加到父容器 假定是body */}
A.prototype.bindEvent = function(){ /* 绑定事件 click, alert(123)*/ }
业务环境是左右iFrame结构
// 左边iFrame代码,一个列表
<ul>
<li>我是主角,点我右边跳到页B<b>点我new A()</b></li>
<li>我是配角,点我右边跳刀页C</li>
</ul>
// 右边iFrame加载对应URL
操作流程是
先点击主角,右边加载B,然后点击new A(),生成的DOM对象事件有效,弹出123
接着点击配角,右边加载C,然后点击new A(),同样生成DOM,但是点击事件无效
最后点击主角,右边加载B,然后点击new A(),生成DOM,但是点击事件无效
是DOM引用的问题吗?右侧iFrame刷新后this.dom是不是废弃了?
没太看懂,但是我大致按照你的意思写了一下,可以执行
index.html
A.html
B.html
C.html
绑定事件需要监听iframe的load事件 另外 jQuery的话iframe里面的$和父页面不是一个
有点不是很懂你的意思、不过我改进了一下。
首先你有两个iframe,用一个new A()是达不到你想要的效果的。
返回的 this.dom也不是指定的一个。
a.html
b.html
结帖,谢谢各位指点。