[jquery] jQuery UI 대화 상자가 열려 있는지 감지

jQuery UI 대화 상자를 사용하고 있습니다. 열려 있으면 한 가지를하고 싶습니다. 닫혀 있으면 다른 작업을하고 싶습니다.

내 질문은 jQuery UI 대화 상자가 열려 있는지 여부를 어떻게 감지합니까?



답변

문서 를 읽으면 .

$('#mydialog').dialog('isOpen')

이 메서드는 jQuery 객체가 아닌 부울 (true 또는 false)을 반환합니다.


답변

사실, 당신은 그것을 사실과 명시 적으로 비교해야합니다. 대화 상자가 아직 존재하지 않으면 예상대로 false를 반환하지 않고 DOM 개체를 반환합니다.

if ($('#mydialog').dialog('isOpen') === true) {
    // true
} else {
    // false
}


답변

특정 요소에서 대화 상자가 열려 있는지 확인하려면 다음을 수행하십시오.

if ($('#elem').closest('.ui-dialog').is(':visible')) { 
  // do something
}

또는 요소 자체가 표시되는지 확인하려면 다음을 수행 할 수 있습니다.

if ($('#elem').is(':visible')) { 
  // do something
}

또는…

if ($('#elem:visible').length) { 
  // do something
}


답변

jQuery 대화 상자에는 isOpenjQuery 대화 상자가 열려 있는지 여부를 확인하는 데 사용할 수 있는 속성이 있습니다.

다음 링크에서 예제를 볼 수 있습니다.
http://www.codegateway.com/2012/02/detect-if-jquery-dialog-box-is-open.html


답변

Nick Craver의 설명은 대화 상자가 아직 정의되지 않은 경우 발생하는 오류를 방지하는 가장 간단한 방법입니다.

if ($('#elem').is(':visible')) {
  // do something
}

하지만 먼저 다음을 사용하여 CSS에서 가시성을 설정해야합니다.

#elem { display: none; }


답변