아약스 작업이 실패하면 오류가있는 새 div를 만든 다음 대화 상자로 표시합니다. 대화 상자가 닫히면 div를 완전히 파괴하고 다시 제거하고 싶습니다. 어떻게해야합니까? 내 코드는 현재 다음과 같습니다.
$('<div>We failed</div>')
.dialog(
{
title: 'Error',
close: function(event, ui)
{
$(this).destroy().remove();
}
});
이 대화 상자를 실행하면 대화 상자가 올바르게 표시되지만 대화 상자를 닫으면 대화 상자가 여전히 HTML에 표시됩니다 (FireBug 사용). 내가 여기서 무엇을 놓치고 있습니까? 내가 잊어 버린 것?
업데이트 : 방금 코드에서 Firebug 콘솔에 오류가 있음을 알았습니다.
$ (this) .destroy는 함수가 아닙니다
누구든지 나를 도울 수 있습니까?
업데이트 : 방금 $(this).remove()
대신하면 html에서 항목이 제거됩니다. 그러나 DOM에서 완전히 제거됩니까? 아니면 어떻게 든 파괴 기능을 먼저 호출해야합니까?
답변
$(this).dialog('destroy').remove()
이것은 대화 상자를 파괴 한 다음 DOM에서 대화 상자를 “호스팅”했던 div를 제거합니다.
답변
왜 제거 하시겠습니까?
여러 인스턴스가 생성되는 것을 방지하려면 다음 방법을 사용하십시오.
$('#myDialog')
.dialog(
{
title: 'Error',
close: function(event, ui)
{
$(this).dialog('close');
}
});
그리고 오류가 발생하면 다음을 수행하십시오.
$('#myDialog').html("Ooops.");
$('#myDialog').dialog('open');
답변
$(dialogElement).empty();
$(dialogElement).remove();
이것은 진짜로 수정
답변
이것은 나를 위해 일했다
$('<div>We failed</div>')
.dialog(
{
title: 'Error',
close: function(event, ui)
{
$(this).dialog("close");
$(this).remove();
}
});
건배!
추신 : 나는 다소 비슷한 문제가 있었고 위의 접근 방식으로 해결했습니다.
답변
나를 위해 매력처럼 작동하는 못생긴 솔루션 :
$("#mydialog").dialog(
open: function(){
$('div.ui-widget-overlay').hide();
$("div.ui-dialog").not(':first').remove();
}
});
답변
당신은 사용할 수 있습니다
$(dialogElement).empty();
$(dialogElement).remove();
답변
모든 js 프로젝트에서이 기능을 사용합니다.
당신은 그것을 호출 : hideAndResetModals ( “# IdModalDialog”)
다음을 정의합니다.
function hideAndResetModals(modalID)
{
$(modalID).modal('hide');
clearValidation(modalID); //You implement it if you need it. If not, you can remote this line
$(modalID).on('hidden.bs.modal', function ()
{
$(modalID).find('form').trigger('reset');
});
}