2010-07-22 3 views
4

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

Все работает правильно, за исключением следующего:

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

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

Например,

Есть три ряда в списке;

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

Удалить;

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

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

Нажмите ссылку открытия диалога в строке 2;

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

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

Нажмите ссылку открытия диалога в строке 2;

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

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

Enter image description here

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

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

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


Диалог код экземпляра:

<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"); 
+0

Нам нужно увидеть код, в котором вы открываете диалог. –

+0

@Nick Craver 'jQuery (" # dialog_7 "). Dialog (" open ");' – stormdrain

+0

Должно быть больше, есть название и содержимое в диалоговом окне ... нужен код для решения проблемы :) –

ответ

1

Оказывается, диалог не денется. После его закрытия теперь было два диалога с тем же 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

Да, это поведение может возникнуть, если существуют два диалоговых тега, которые имеют одинаковый идентификатор (который не является допустимым HTML). – 0x4a6f4672

Смежные вопросы