2012-06-12 5 views
3

나는 다음과 같은 스크립트를 사용하여 라이트 박스를 만들어 :라이트 박스를 닫을 때 이스케이프 키 기능을 추가하는 방법은 무엇입니까?

<script type="text/javascript"> 
    $(document).ready(function(){ 
      $(".BtnAction").click(function(){        
       var objPopup = $($(this).attr("rel")); 

       var mask = $("<div/>", { 
        id : "mask", 
        style: "background:#000; display:block;top:0;left:0;position:absolute;opacity:0.8;filter: alpha(opacity=80);width:100%;height:100%;z-index:9998;", 
        click: function(){ 
         $(objPopup).hide(); 
         $(this).remove(); 
        }  
       }); 

       $(".PopupWrap").before(mask); 
       objPopup.show(); 
      }); 

      $(".CloseIcon").click(function(){ 
       $(this).parent().hide(); 
       $("#mask").remove(); 
      }); 

    }); 
</script> 

가 클릭하면, 라이트뿐만 아니라 닫을 수 있도록하는 방법은 ESC 키를 구현할 수있다?

고마워요.

답변

11

$ (document) .ready() 블록 내의 문서에 esc 키 수신기를 추가하고 $ ('. CloseIcon'). click() 함수에 대해 현재 가지고있는 코드를 반복 할 수 있지만 target 그것으로 라이트 이드의 :

$(document).ready(function(){ 

// Your existing code 

    $(document).keyup(function(e) { 
     if (e.keyCode == 27) { // esc keycode 
      $('#lightboxId').hide(); 
      $('#mask').remove(); 
     } 
    }); 
}); 

https://stackoverflow.com/a/3369624/1010337

+0

와우, 정말 감사합니다! 그건 분명히 도움이되었습니다. \t // 탈출 기능 \t $ (문서) .keyup (기능 (전자) { \t 경우 (e.keyCode = 나는 다른 선택기의 대상이되는 몇 가지 빛 상자를 가지고 있기 때문에, 나는 할 코드를 변경 . = 27) {// ESC 키 코드 \t $는 ("#의 popup1, #의 popup2, #의 popup3, #의 popup4, #의 popup5")는() 숨길; \t $ ('# 마스크')) (제거;. \t } \t}); – Ori

+0

도움이 된 것을 기쁘게 생각합니다. 고유 한 ID로 각 라이트 박스를 타겟팅하는 것이 아니라 함께 타겟팅 할 수있는 모든 클래스를 클래스에 추가 할 수 있습니다 (예 : $ ('. js-lightbox'). 그렇게하면 스크립트를 변경하거나 제거 할 필요가 없습니다. – ActiveDan

관련 문제