테스트 사이트 - 개발 중인 베타 버전입니다

레이어 팝업 질문드립니다.. 채택완료

쌍킴 10년 전 조회 4,307

각 링크 클릭시 레이어로 팝업을 띄우려고 하는데요
레이어팝업 1클릭하면 팝업된 레이어1이 나오도록이요..
현재는 레이어팝업1 클릭하면 팝업된레이어 1,2,3이 모두 나오네요..
어디를 손봐야할까요

body {
 font-size: 12px;
 color: #FFFFFF;
 font-family: "굴림";
}
#layer_pop{position:fixed; width:100%; height:2000px; top:0px; left:0px; background:url('./images/dark_bg.png'); display:none;}
#layer_pop .pop_cont{position:absolute;}
.btn_close{display:block; font-weight:bold; color:#FFFFFF; padding:3px; text-align:right;}

 </style>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script>
$(document).ready(function() {
 popConfig();
});
function popConfig(){
 $(".btn_open").click(layerOpen);
 $(".btn_close").click(layerClose);
}
function layerOpen(){
 $("#layer_pop").css("display","block");
 var tx = ($(window).width()-$("#layer_pop .pop_cont").width())/2;
 var ty = ($(window).height()-$("#layer_pop .pop_cont").height())/2;
 $("#layer_pop .pop_cont").css({left:tx+"px",top:ty+"px"});
 $("body").css("overflow","auto");
}
function layerClose(){
 $("#layer_pop").css("display","none");
 $("body").css("overflow","auto");
}
</script>
</head>
<table cellspacing="0" cellpadding="0" align="center">
 <tr>
  <td height="60"></td>
 </tr>
 <tr>
  <td>
  <a href="#" class="btn_open">
  레이어팝업1
  </a>
  </td>
 </tr>
 <tr>
  <td>
  <a href="#" class="btn_open">
  레이어팝업2
  </a>
  </td>
 </tr>
 <tr>
  <td>
  <a href="#" class="btn_open">
  레이어팝업3
  </a>
  </td>
 </tr>
</table>

 <div id="layer_pop">
  <div class="pop_cont">
  팝업된 레이어1
  </div>   
 </div>
 <div id="layer_pop">
  <div class="pop_cont">
  팝업된 레이어2
  </div>   
 </div>

 <div id="layer_pop">
  <div class="pop_cont">
  팝업된 레이어3
  </div>   
 </div>

</html>

 

댓글을 작성하려면 로그인이 필요합니다.

답변 2개

채택된 답변
+20 포인트
10년 전

우선 id는 중복되지 않아야 합니다.

<div id="layer_pop"> 이것들을 <div id="layer_pop1"> 이런식으로 숫자를 붙여주시구요

<a href="#" class="btn_open"> 여기에 각각 <a href="#" class="btn_open" data-target="#layer_pop1​"> 이런식으로 넣어주신다음 스크립트에서는 대상에 대해서 각기 처리하도록 해주면 되겠네요.

 

function popConfig(){

 $(".btn_open").click(layerOpen($(this).data('target')); return false;);

 $(".btn_close").click(layerClose($(this).data('target')​); return false;​);

}

function layerOpen(target){

 if(target==undefined) return false;

 $(target).show();

 var tx = ($(window).width()-$(target+" .pop_cont").width())/2;

 var ty = ($(window).height()-$(target+" .pop_cont").height())/2;

 $("#layer_pop .pop_cont").css({left:tx+"px",top:ty+"px"});

 $("body").css("overflow","auto");

}

function layerClose(target){

 if(target==undefined) return false;​

 $(target).hide();

 $("body").css("overflow","auto");

}

 

검증은 안해봤습니다만 이런식이면 되지 않을까 합니다. 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

쌍킴
10년 전
감사합니다! 근데 안되요 ㅠㅠㅠㅠ

댓글을 작성하려면 로그인이 필요합니다.

10년 전

중간에 이상한 문자가 끼어있어서 제대로 안되기도 했고.. 스크립트도 약간 문제가 있었던듯 하네요.

일단 제스타일대로 다시 정리해봤습니다. 검증했습니다.

</p><p><!doctype html></p><p><html lang="ko"></p><p><head></p><p><meta charset="utf-8"></p><p><style type="text/css"></p><p>body {</p><p> font-size: 12px;</p><p> color: #FFFFFF;</p><p> font-family: "굴림";</p><p>}</p><p>.layer_pop{position:fixed; width:100%; height:2000px; top:0px; left:0px; background:url('./images/dark_bg.png'); display:none;}</p><p>.layer_pop .pop_cont{position:absolute;}</p><p>.btn_close{display:block; font-weight:bold; color:#FFFFFF; padding:3px; text-align:right;}</p><p> </style></p><p><script src="<a href="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" target="_blank" rel="noopener noreferrer">https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js</a>"></script></p><p><script type="text/javascript"></p><p>$(document).ready(function() {</p><p>    $(".btn_open").on('click',function(){</p><p>        var target = $(this).data('target');</p><p>        if(target==undefined) return false;</p><p>        $(target).show();</p><p>        var tx = ($(window).width()-$(target+" .pop_cont").width())/2;</p><p>        var ty = ($(window).height()-$(target+" .pop_cont").height())/2;</p><p>        $(target+" .pop_cont").css({left:tx+"px",top:ty+"px"});</p><p>        $("body").css("overflow","auto");</p><p>        return false;</p><p>    })</p><p>    $(".btn_close").on('click',function(){</p><p>        var $target = $(this).closest('.layer_pop');</p><p>        $target.hide();</p><p>        $("body").css("overflow","auto");</p><p>        return false;</p><p>    });</p><p>});</p><p></script></p><p></head></p><p><body></p><p><table cellspacing="0" cellpadding="0" align="center"></p><p> <tr></p><p>  <td height="60"></td></p><p> </tr></p><p> <tr></p><p>  <td></p><p>  <a href="#" class="btn_open" data-target="#layer_pop1"></p><p>  레이어팝업1</p><p>  </a></p><p>  </td></p><p> </tr></p><p> <tr></p><p>  <td></p><p>  <a href="#" class="btn_open" data-target="#layer_pop2"></p><p>  레이어팝업2</p><p>  </a></p><p>  </td></p><p> </tr></p><p> <tr></p><p>  <td></p><p>  <a href="#" class="btn_open" data-target="#layer_pop3"></p><p>  레이어팝업3</p><p>  </a></p><p>  </td></p><p> </tr></p><p></table></p><p> <div id="layer_pop1" class="layer_pop"></p><p>  <div class="pop_cont"></p><p>  팝업된 레이어1</p><p>  <button type="button" class="btn_close">닫기</button></p><p>  </div>    </p><p> </div></p><p> <div id="layer_pop2" class="layer_pop"></p><p>  <div class="pop_cont"></p><p>  팝업된 레이어2</p><p>  <button type="button" class="btn_close">닫기</button></p><p>  </div>    </p><p> </div></p><p> <div id="layer_pop3" class="layer_pop"></p><p>  <div class="pop_cont"></p><p>  팝업된 레이어3</p><p>  <button type="button" class="btn_close">닫기</button></p><p>  </div>    </p><p> </div></p><p></body></p><p></html></p><p>

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인