Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > JQuery UI dialog уничтожение окна


Автор: Sanchezzz 24.9.2012, 16:02
Добрый день есть проблема с уничтожением вызванного окошка

Первые деалог вызывается и в него подгружается html + JS код через ajax
Код


$(function(){

$('.option .mini_i_edit').die();
$('.option .mini_i_edit').live( 'click' , function(){
    $('.editOption').dialog({ 
        autoOpen: true , 
        modal: true , 
        close:  function(){
               $('.editOption').dialog("destroy");    
        } 
    });
});

});

Все работает закрываем нажимаем на кнопку повторный вызов открываем диалог подгружаем выше указанный код нажимаем на .mini_i_edit создаются 2 окна а должен быть один. 
Получается событие 
Код

$('.editOption').dialog("destroy");
    неверно выполняется  либо я не правильно понял мануал

.option .mini_i_edit У меня динамический заполняемый список с кнопками редактировать удалить поэтому нужен был live

Версии
 JQuery 1.8.1
 JQuery UI 1.8.23



Автор: ksnk 24.9.2012, 16:24
Цитата(Sanchezzz @  24.9.2012,  16:02 Найти цитируемый пост)
Первые деалог вызывается и в него подгружается html + JS код через ajax

Возможно, во второй клик все подгрузилось уже 2 раза. Таким образом 2 live на одной ссылке открыли 2 диалога.

Автор: Sanchezzz 24.9.2012, 16:35
Код

$('.option .mini_i_edit').die();

Должно убить все событие.

Добавлено @ 16:39
Добавил Алерт в клик.  Алерт появляется 1 раз но окна по прежнем показывает. мне кажется тут виновата верстка как я ее использую 

Код

<div class="editOption" style="display:none">
    <div class="editOption_div" style="display:none">
        <label>Значение</label>
        <input type="text" class="OptionValue">
        <label>Название</label>
        <input type="text" class="OptionName">
        <label>Выбрано по умолчанию?</label>
        <input type="checkbox" class="OptionSelected">    
    </div>
</div>

Попробую создавать див и из контейнера подгружать затем уничтожать див remove();

Автор: Sanchezzz 24.9.2012, 17:13
"Моя выйграл" туповато но работает)
Код

$('.option .mini_i_edit').die();
$('.option .mini_i_edit').live( 'click' , function(){
    $(document.body).append( $('<div>' , {class:'dialogEditOption'}) );
    $('.dialogEditOption').dialog({ 
        autoOpen: true , 
        modal: true ,
        close:  function(){
            $('.dialogEditOption').dialog("destroy");    
            $('.dialogEditOption').remove();                            
        } 
    });
    $('.dialogEditOption').html(  $('.editOption_div').html() ).show(350);
});


Автор: ksnk 24.9.2012, 17:22
А почему не завести диалог сразу со старта страницы с autoOpen:false? Тогда нужно было бы писать только  $('.dialogEditOption').open() при реакции на клик.

Автор: Sanchezzz 24.9.2012, 18:40
Я покажу вам скрин почему я не могу завести отдельно деалог при старте страницы.
http://savepic.net/3459020.htm




Автор: ksnk 24.9.2012, 19:10
Код

if($('.dialogEditOption').length==0){
$(document.body).append( $('<div>' , {class:'dialogEditOption'}) );
    $('.dialogEditOption').dialog({ 
        autoOpen: false, 
        modal: true 
    });
}
$('.option .mini_i_edit').die();
$('.option .mini_i_edit').live( 'click' , function(){
    $('.dialogEditOption').open();
});

?

Автор: Sanchezzz 24.9.2012, 19:27
ksnk, код вполне работает ток в UI нет метода $('.dialogEditOption').open(); Все через .dialog('open');
К сожалению, я уже ушел от этой задачи дальше и адаптировать текущий рабочий код пока не вижу смысла


 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)