Закрытие диалога вызывает слишком много рекурсии - PullRequest
2 голосов
/ 01 июля 2010

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

Независимо от того, какое действие предпринято (Да, Нет, Х), возникает ошибка Слишком много рекурсии. Функция работает в том, что строка удаляется, а диалоговое окно закрывается, но это вызывает ошибку TMR и пожирает память Firefox.


$('a img.delete').live('click', function(event){
rowid = this.name;$('#' + rowid).addClass('ui-state-highlight');
$("#dialog-del-r").dialog('open');
return false;
});

 $("#dialog-del-r").dialog({autoOpen:false,height:225,width:250,modal:false,position:[700,150],
buttons: {'Yes': function() {
   $('#summary-report').empty();
   $('#' + rowid).remove();
   $(this).dialog('close');
  },
  'No': function() {
   $('#' + rowid).removeClass('ui-state-highlight');
   $(this).dialog('close');
  }}
  ,close: function() {
   $('#' + rowid).removeClass('ui-state-highlight');
   $(this).dialog('close');
  }
 });

Любая из этих строк $ (this) .dialog ('close'); вызвать проблему.

У меня также есть кнопка сброса формы, которая делает то же самое:


 $('#reset-form').button({icons: {primary:'ui-icon-trash'}}).click(function(){
$('#dialog-reset').dialog('open');
});

 $("#dialog-reset").dialog({autoOpen:false,height:225,width:250,modal:false,position:[200,350],buttons: {'Yes': function() {$(this).dialog('close');location.reload(true);},'No': function() {$(this).dialog('close');}},close: function() {$(this).dialog('close');}});

1 Ответ

4 голосов
/ 01 июля 2010

Мне удалось разобраться с этим. Секция закрытия закрывает диалог автоматически, тогда как у меня там был диалог («закрыть»).



  ,close: function() {
   $('#' + rowid).removeClass('ui-state-highlight');
   $(this).dialog('close');
  }

должно быть:



  ,close: function() {
   $('#' + rowid).removeClass('ui-state-highlight');
  }


...