2013-02-24 1 views
0

내 코드는 jQuery UI 대화 상자를 열고 AJAX를 사용하여 내용을로드합니다. 다른 여러 위젯은 대화 상자에서 초기화됩니다. 대화 상자가 닫히면 div()를 제거하고 div()를 제거하지만 내부의 위젯은 삭제하지 않습니다.jQuery UI 대화 상자의 내용을 재귀 적으로 파기합니다.

대화 닫기에서 mydiv의 모든 요소를 ​​올바르게 제거하려면 어떻게해야합니까?

// mydiv contains variable content 
mydiv.dialog({ 

    autoOpen: true, 
    close: function(){ 
     // destroy mydiv and all widgets inside it 

     mydiv.dialog('destroy').remove(); 

     alert('Unfortunatelly, inner dialog remained. How to get rid of ALL widgets placed inside "mydiv?"'); 
     // How do i destroy everything inside? 
    }   
}); 

대화 샘플 : http://jsfiddle.net/r4cHY/4/

감사합니다!

+0

이전 버전의 jQuery/jQuery UI가 필자의 예제와 잘 어울린 것 같습니다. – romaninsh

답변

0

나는 내 자신의 문제를 해결했습니다. jQuery UI 대화 상자를 구현하면 지정된 부모가 완전히 제외되고 더 잘 배치 될 수있는 위치로 이동됩니다. 불행하게도 대화 상자가 열린 대화 상자와 위젯 사이에는 더 이상 연결 고리가 없기 때문에 내용을 삭제해도 대화 상자에 영향을 줄 수 없습니다.

더 나은 바이올린 : http://jsfiddle.net/gxXBY/

이 복잡한 UI 시스템 내부의 부정적인 영향 모든 종류의 리드와 내가 믿는은 jQuery를 UI의 버그입니다. 여기에 수정은 다음과 같습니다

var oldcr = $.ui.dialog.prototype._create; 
$.ui.dialog.prototype._create = function(){ 
    var self=this; 
    $('<div/>').insertBefore(this.element).on('remove',function(){ 
     self.element.remove(); 
    }); 
    oldcr.apply(this,arguments); 
}; 

은 어디서든 자바 스크립트 내부에서이 문제를 추가하고 모든 대화 상자를 수정합니다. 나를 위해 완벽하게 일했습니다.

관련 문제