2016-07-25 2 views
0

jquery로 작업 중이며 대화 상자를 닫은 후 열리는 방법을 청취하려고합니다. 그러나 얼마나 많은 부분이 열려 있는지 알고 있습니다. 예 : 4 개가있는 경우 하나를 닫으면 3을 얻으려고 할 때 4를 반환하고 마지막에 1을 ​​열면 2를 반환하고 마지막 하나를 닫으면 1을 반환합니다.대화 상자에서 길이가 잘못되었습니다.

내가 제대로하고 있니? 나는 문서를 살펴보고 afterClose와 같은 것을 찾으려고 노력하지만 거기에는 없다.

$(".test").dialog({ 
     autoOpen: false, 
     height: "auto", 
     width: "auto", 
     modal: true, 
     close: function(e){ 
      // This returns wrong lenght 
      console.log($('.test:visible').length); 
      if($('.test:visible').length === 1) { 
        console.log($('.test a').text()); 
      } 
     } 
}); 

Source

+0

아마도 모달이 완전히 닫힐 때까지 콜백 함수가 대기하지 않았습니까? – Blazemonger

+0

@Blazemonger 어떤 방법으로 그것을 할 수 있습니까? –

+0

여기 또는 http://jsfiddle.net 또는 http://codepen.io와 같은 사이트에서 문제를 재현하는 완전한 예제를 제공하십시오. – Blazemonger

답변

1

가 어떻게 그 숫자를 얻고있다 :

$(".test").dialog({ 
      autoOpen: false, 
      height: "auto", 
      width: "auto", 
      modal: true, 
      close: function(e){ 
       $(this).destroy(); 
       // This returns wrong lenght 
       console.log($('.test').length); 
       if($('.test').length === 1) { 
         console.log($('.test a').text()); 
       } 
      } 
}); 
+0

예, 대화 상자를 닫으면 대화 상자가 손상됩니다. –

+0

이것은 매우 중요한 정보입니다. 다음에 그 시간을 포함 시키십시오. .destroy를 호출 한 후에 그냥 카운트하십시오. destoryFunction() { $ (this) .dialog ('destroy'); $ (". 시험") 길이 === 1 // 기타 } –

0

시도는 jQuery 선택 표시되는 항목을 검색 할 변경? 당신이

$를 호출 대화 상자 ('. 테스트'). 길이를 파괴하지 않는

는 항상 DOM에 테스트 클래스의 수를 반환하는 것입니다. .remove() 또는 대화 상자를 제거하기 위해 뭔가를 사용하고 있습니까? 더 많은 정보가 필요합니다.

대화 상자를 닫을 때 DOM에서 대화 상자가 제거되지 않습니다. 그냥 숨기면 페이지 하단의 숨겨진 HTML을 볼 수 있습니다. 여러 개의 대화 상자를 사용하는 적절한 방법은 instances 개의 대화 상자를 사용하는 것입니다. 하지만 그 똥 복잡합니다. 좀 더 코드를 게시하십시오. 특히 html을 설정하는 방법과 대화 상자를 삭제하는 방법을 알려주십시오.

또한 (내가 아직 코멘트가 없기 때문에), 윈도우가 닫히기 전에 윈도우가 숨겨지기 전에 close 이벤트가 발생하지만, close 이벤트를 취소하기위한 두개의 장소, beforeClose (일반적으로 유효성 검사를위한), close (어쩌면 당신이 물건이나 물건의 일부 인구를 할 때).

+0

시도했지만 작동하지 않았습니다. –

+0

@Blazemonger가 창 닫기 전에 함수를 실행하는 것이 옳았습니다. –

+0

실제로 사실이 아닙니다. 닫힌 대화는 닫은 후에 제거되지 않습니다. 왜 그런지 모르지만 그렇게 할 이유가 있어야합니다. – sidonaldson

0
$(".test").dialog({ 
      autoOpen: false, 
      height: "auto", 
      width: "auto", 
      modal: true, 
      close: function(e){ 
       $(this).destroy(); 
       // This returns wrong lenght 
       console.log($('.test').length); 
       if($('.test').length === 1) { 
         console.log($('.test a').text()); 
       } 
      } 
}); 
관련 문제