Закрытие диалогового окна jQuery UI не очищает диалог - PullRequest
4 голосов
/ 22 июля 2010

Используя jQuery UI , у меня есть плагин для вкладок, и на вкладке 1 загружается страница, которая содержит таблицу и в каждой строке есть ссылка на диалог.

Все работает правильно, сохраните следующее:

В диалоге есть опция для удаления строки, из которой был открыт текущий диалог.После подтверждения и удаления строки вкладка обновляется, и отображается новая таблица с удаленной соответствующей строкой.

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

Например,

В списке три строки;

Открыть диалог из строки 2;

Удалить;

Диалог закрыт из функции JavaScript, вкладка обновляется, теперь две строки;

Ссылка открытия диалога в диалоговом окневторая строка (которая раньше была строкой 3) имеет тот же идентификатор диалогового окна, что и только что открытая;

Щелкните ссылку открытия диалога в строке 2;

Диалоговое окно отображается так же, как и раньше - для старой строки2, вместо текущей строки 2;

Закрыть диалоговое окно;

Щелкните ссылку открытия диалогового окна в строке 2;

Отображается правильно - данные из текущей строки 2;

Я не знаю, сделал ли этоense ... Вот картинка того, что происходит:

Enter image description here

Итак, строка под удаляемой строкой наследует идентификатор диалога, а при нажатии показывает старый диалог.Если закрыто, а затем снова открыто, в диалоговом окне отображается правильное содержимое.

Я использую dialog("close") в настоящее время и пробовал dialog("destroy"), но это полностью убивает его, а строка ниже не 't ничего открыть ...

Как я могу решить эту проблему?


Код создания диалогового окна:

<script>
    <?php
        $ee=1;
        foreach($bugs->result() as $rr){
            echo "jQuery(\"#dialog_$ee\").dialog({autoOpen:false,width:850,height:550});\n";
            $ee++;
    }?>
</script>

Затем откройте диалоговое окно:

jQuery("#dialog_<?=$i?>").dialog("open");

Ответы [ 2 ]

1 голос
/ 22 июля 2010

Оказывается, диалог никуда не денется. После его закрытия появилось два диалога с одинаковыми id.

В обработчике успеха вызванной функции удаления я в итоге сбросил идентификатор диалога и затем вызвал в нем диалоговое окно («уничтожить»):

onSuccess: function(transport){
    var tabs = jQuery('#tabs').tabs();
    tabs.tabs( 'url', 0,'/bugs/loadTab1');
    tabs.tabs('load', 0);
    closeDialog(dialogID);
    jQuery("#"+dialogID).attr("id",dialogID+"_old");
    jQuery("#"+dialogID+"_old").dialog("destroy");
},
0 голосов
/ 23 марта 2011
...