2013-08-05 2 views
16

jquery-ui에서 .dialog("close").dialog("destroy")의 차이점은 무엇입니까?.dialog ("close")와 .dialog ("destroy")의 차이점

나는 이전 개발자가 .dialog("destroy")을 사용한 스크립트를 가지고 있지만 대화 상자를 닫으면 일부 작업을 수행해야합니다. 나는 .dialog("close")으로 불리는 beforeclose을 찾았고 .dialog("destroy")으로는 찾지 못했습니다. 그래서 나는이 방법을 destroy에서 close으로 바꾸어서 작동하게 만들었습니다.

.dialog("close")을 사용하고 .dialog("destroy")을 사용하면 놓칠 수있는 것이 있습니까?

는 PS : 대화 자체를 닫 사용자 정의 버튼을 사용하고, .dialog("close") 버튼

+2

: http://api.jqueryui.com/dialog/#method-close – Prasanth

+0

감사합니다 @Parsanth을 도움입니다. 나는 많이 봤지만 아무것도 찾지 못했습니다 : .. https://www.google.com/search?q=difference+between+dialog+close+and+dialog+destroy – zzlalani

답변

23

close의 클릭 이벤트에서 호출은 구성 대화하지만, 눈에 보이지 않는 잎, 그래서 당신은 .dialog('open') 다시 그것을 다시 열 수 있습니다.

destroy은 대화 상자를 완전히 구성 해제합니다. DOM에 추가 된 모든 UI 요소와 관련 이벤트 핸들러가 제거됩니다.

destroy하지 (당신이에 .dialog를 호출 요소 즉) Docs에서

5

대화 상자의내용을 개최 요소를 제거합니다 :

파괴 :

대화 상자 기능을 완전히 제거합니다. 그러면 요소가 초기화 전 상태로 돌아갑니다.

가까운 :

필요할 때 다시 열 수있는 대화 상자를 닫습니다.

8

양식 입력 대화 상자를 사용하는 경우 입력을 제거하지 않아도됩니다. 따라서 : 입력 의사 선택기로 유효성을 검사하는 경우 '파괴 된'요소의 유효성이 검사됩니다. 이것은 .remove()가 도움이되는 곳입니다.

사용자 정의 닫기 이벤트를 추가하여 대화 상자를 파괴하고 그 내부의 모든 폼을 제거하여 추가 검증을 방지 할 수 있습니다.

$dialog = $("#your_dialog_id"); 
$dialog.dialog('option', { 
     title: "title", 
     close: function (event, ui) { 
      $dialog.find("form").remove(); 
      $dialog.dialog('destroy'); 
     } 
    }); 
여기에서 시작