2012-01-15 4 views
0

사용자가 여러 개의 독립적 인 대화 상자를 열 수있는 경우가 있습니다. 직관적으로 초점이있는 대화 상자는 x 아이콘을 사용하거나 ESC를 눌러 닫을 수 있습니다.다른 대화 상자를 닫은 후 다음으로 높은 대화 초점을 부여하는 방법

이 대화 상자를 닫은 후 다음 z 키 인덱스를 기준으로 다음 대화 상자에 포커스가 주어져 사용자가 계속 열려있는 모든 대화 상자를 닫을 수 있습니다.

Fiddle here. 로드 한 후에 ESC를 눌러 닫을 수있는 대화 상자를 선택하십시오. 다음으로 높은 대화 상자는 포커스를 얻지 못합니다.

답변

2

close 이벤트가 발생하면, (a .ui-dialog 단순히 요소를 숨기는 폐쇄) 볼 수있는 div.ui-dialog 확인하고 최고 z-index있다. 그런 다음 해당 대화 상자에 포커스를 설정하십시오. 이것은 가장 효율적일 수는 없지만 작동합니다 :

// ... 
close: function() {    
    var index_highest = 0; 
    var current_dialog = null; 
    $('.ui-dialog').each(function() { 
     // we only care about dialogs that are visible 
     if ($(this).is(':visible')) { 
      // always use a radix when using parseInt 
      var index_current = parseInt($(this).css("zIndex"), 10); 
      if(index_current > index_highest) { 
       index_highest = index_current; 
       current_dialog = $(this); 
      } 
     } 
    }); 
    if (current_dialog) { current_dialog.focus(); } 
} 
// ... 

. 크레딧 justkt's answer은 jQuery를 사용하여 가장 높은 z- 인덱스를 가진 요소를 찾는 것에 관한 것입니다.

관련 문제