모달창 닫기 버튼 질문

모달창 닫기 버튼 질문

QA

모달창 닫기 버튼 질문

답변 4

본문

인터넷 뒤적여가며 모달을 만들고 있는대 a태그에 이미지 넣어서 모달을 띄워주는 버튼을 만들었는대

거기다가 닫기 버튼 기능을 넣어버리니까 누름과 동시에 열렸다가 바로 닫혀버리는대

한번누르면 열리고 다시한번 누르면 닫히게 하려면 어떻게 하면되니요?


<style>
#modalLayer{display:none; position:relative;}
#modalLayer .modalContent{width:250px; height:200px; padding:20px; border:1px solid #ccc;z-index:11; background:#fff;overflow:auto;}
</style>
<script>
$(document).ready(function(){
  var modalLayer = $("#modalLayer");
  var modalLink = $(".modalLink");
  var modalClose = $(".modalClose");
  var modalCont = $(".modalContent");
  var marginLeft = modalCont.outerWidth()/2;
  var marginTop = modalCont.outerHeight()/2; 
  modalLink.click(function(){
    modalLayer.fadeIn("slow");
    modalCont.css({"margin-top" : '10px'});
    $(this).blur();
    $(".modalContent > a").focus(); 
    return false;
  });
  modalLink.click(function(){
    modalLayer.fadeOut("slow");
    modalLink.focus();
  });        
});
</script>

<a href="#modalLayer" class="modalLink"><img src="abcd.png"></a>
<div id="modalLayer">
  <div class="modalContent">
  모달내용
  <div>
  </div>

이 질문에 댓글 쓰기 :

답변 4


$(document).ready(function(){
  var modalLayer = $("#modalLayer");
  var modalLink = $(".modalLink");
  var modalClose = $(".modalClose");
  var modalCont = $(".modalContent");
  var marginLeft = modalCont.outerWidth()/2;
  var marginTop = modalCont.outerHeight()/2; 
  modalLink.click(function(){
    modalLayer.fadeToggle("slow");
    modalCont.css({"margin-top" : '10px'});
    $(this).blur();
    $(".modalContent > a").focus(); 
    return false;
  });      
});

 

fadeToggle기능을 사용하세요

같은 항목(modalLink)에 대한 클릭 이벤트가 두 번 작성되어 있어 열리는 이벤트 한 번/닫히는 이벤트 한 번이 연속으로 실행된 듯합니다.

위에서 코드 작성해주신 것처럼 fadeToggle 기능을 이용하시면 열려있을 경우 닫힘/닫혀있을 경우 열림으로 작동하게 됩니다.

fadeIn fadeOut두개로 나누지 마시고 fadeToggle로 click이벤트를 한번만 사용하셔서 짜보시면 좋을것같네요

https://codepen.io/ww9603/pen/KKgVdOV 코드팬으로 대충 예시를 만들어봣는대 이미지를 한번 누르면 모달창이 뜨고 한번 더누르면 닫히게 만드려고합니다.

지금은 이미지를 누르면 뜨자마자 바로 닫혀버립니다.

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
  • 질문이 없습니다.
전체 0
© SIRSOFT
현재 페이지 제일 처음으로