Mootools squeezebox处理程序删除隐藏的div元素

时间:2012-03-12 18:25:26

标签: mootools squeezebox

在第一次模态弹出显示后删除隐藏的div元素内容。

使用下面的处理函数,模态显示隐藏的div就好了,然后在清除模态后,对下面的处理函数的后续调用返回“目标不存在”的警告,隐藏的潜水元素是事实上已经消失了。

function OnSubmitHandler() {    
if (e = $('modalcontainer')) {
    SqueezeBox.initialize({
        size : {x : 300, y : 120}
    });
    SqueezeBox.open(e, {
        handler : 'adopt',
        overlayOpacity : 0.7,
        onOpen : function(){
            e.style.display = 'block';
        },
        onClose : function(){
            e.style.display = 'none';
        }
    });
}else{
    alert('Target does not exist');
}
}

这应该很简单,并且处理函数在写入时工作正常,但隐藏的div内容在第一次显示后消失。无法弄清楚原因。我一定错过了什么。

2 个答案:

答案 0 :(得分:2)

因为您adopt内容,它会在DOM中移动到您的squeezebox。由于您没有重复使用您的squeezebox实例并且每次都初始化它,在下一个init中它将清空内容区域(仍然包含e)并且没有进一步采用。

重用实例或查看它是否支持克隆。你也可以将e移回dom,甚至只是作为参考onClose - 做e.dispose()来保护它。然后执行e = e || $()但将其保留为范围变量而不是全局

答案 1 :(得分:2)

更改

if (e = $('modalcontainer')) {

var e = $('modalcontainer'); 
var e = e.clone(); 
if (e) {

通过这种方式,您可以创建要显示的元素的精确副本(保存克隆的ID),然后采用处理程序在关闭时为您处理克隆,因此您不必担心记忆泄漏。