your programing

jQuery UI 대화 상자-인스턴스 메서드에 의해 존재하는지 확인

lovepro 2020. 12. 29. 08:07
반응형

jQuery UI 대화 상자-인스턴스 메서드에 의해 존재하는지 확인


instancejQuery UI Dialog 위젯이 초기화되었는지 여부를 테스트 하는 방법 을 사용하고 싶습니다 . API 와 관련하여 이것은 가능하지만 나를 위해 작동하지 않습니다.

Uncaught Error: cannot call methods on dialog prior to initialization; attempted to call method 'instance'

데모 : http://jsfiddle.net/mDbV7/

최신 정보:

이것은 문서의 실수였습니다. instance메소드는 버전 1.11.0부터 사용할 수 있습니다 . 이 문제를 참조하십시오 .


최신 버전의 jQuery UI에서는 더 이상 아직 초기화되지 않은 항목에 대한 UI 메서드를 호출 할 수 없습니다. 다음과 같이 if 문으로 포장했습니다.

if ($("#divToBeDialoged").hasClass('ui-dialog-content')) {
    // do whatever
} else {
    // it is not initialized yet
}

편집 : 변경된 클래스 이름, 감사합니다 @dmnc


대화를 사용한 후에는 대화를 비우고 파괴하는 것도 좋은 습관입니다. 일반적으로 각 대화 상자의 닫기 이벤트에서이 코드를 사용합니다.

$("#myDialog").dialog({
    // other options
    close: function(event, ui) {
        $(this).empty().dialog('destroy');
    }
}

인스턴스에 대화 상자가 있는지 매번 묻는 것이 아니라 각 대화 상자가 자체적으로 정리되는지 확인하십시오.


당신이 사용할 수있는:

if($('#id').is(':ui-dialog')) {
}

또는

    var obj = $('<div>test</div>').dialog();
    if (obj.is(':ui-dialog')) {
      alert('I\'m a dialog')
    }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/themes/smoothness/jquery-ui.css">
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js"></script>


다음 예제와 같이 html 코드의 기존 ID에서 해당 대화 상자를 만드는 경우 :

$('#main').dialog({});

공지 사항 dialog()클래스를 추가 ui-dialogA의 <div>작업에 대해 생성 된 부모 요소. 상기 #main요소로 추가 클래스가 dialog()있다 : ui-dialog-contentui-widget-content(JQuery와-UI-1.9.2에서). 따라서이 경우 @jbabey의 예에 따라 기존 대화 상자를 확인할 수 있습니다.

if ($('#main').hasClass('ui-dialog-content')) {
    // do whatever
}

     if ($('#update').is(':data(dialog)')) 
     {
              //#update has dialog
     }
     else
     {
              //#update does't have dialog
     }

jQuery UI-v1.10.3

if($( "#myDialog" ).is(':data(uiDialog)')){//is(':data(dialog)') does not work
    //Dialog exist
}

또 다른 방법은

$('.element').is(':data(dialog)');

참조 URL : https://stackoverflow.com/questions/15763909/jquery-ui-dialog-check-if-exists-by-instance-method

반응형