Обработчик squeezebox для Mootools удаляет скрытый элемент div - PullRequest
0 голосов
/ 12 марта 2012

Скрытое содержимое элемента 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 ]

2 голосов
/ 20 ноября 2012

изменение

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

до

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

Таким образом, вы создаете точную копию элемента, который хотите отобразить (за исключением идентификатора клона), а затем обработчик принятия избавляется от клона для вас при закрытии, поэтому вам не нужно беспокоиться о утечка памяти.

2 голосов
/ 13 марта 2012

Поскольку вы adopt контент, он перемещается в DOM на ваш squeezebox.Поскольку вы не используете свой экземпляр squeezebox повторно и не инициализируете его каждый раз, при следующем запуске он очистит область содержимого (по-прежнему содержащую символ e) и больше не сможет его принять.

Повторно используйте экземпляр или посмотрите,вместо этого он поддерживает клон.Также вы можете переместить e обратно в дом или даже просто как ссылку на Close - сделать e.dispose (), чтобы защитить его.Затем выполните e = e || $(), но сохраните его как переменную области действия, а не как глобальную

...