해당 레이아웃 클릭시 그 레이아웃만 나오게 하고 싶은데요 ㅠ,ㅠ 채택완료

11년 전 조회 10,242

소스 보시면 두개의  [미리보기]​,[수정] 다른 id값 레이아웃이 있습니다.

 

클릭을 하게 되면 해당 창이 나오게 되는데

 

문제는 ​[미리보기]를 클릭하면 [수정] 의 레이아웃도 창이 뜨는겁니다 ㅠ,ㅠ

 

한창만 나와야 하는데 2개의 창이 동시에 뜨네요 ㅠ.ㅠ

 

분명 id값을 다르게 지정해주었는데 왜그렇죠?

 

ㅠ,ㅠ​

 

Copy
<a href="#" id="page_layer_open" style="color:#0099CC">[미리보기]</a>      //클릭시 해당 id="layer1"​ 창 열기 <a href="#" id="page_edit_open" style="color:#0099CC">[수정]</a>              //클릭시 해당  id="layer2"​ 창 열기 ​   <div class="layer"> <div class="bg"></div> <div class="layer_area" id="layer1">                      // id값이 layer1인 창 <div> <iframe src='주소1'></iframe> </div> <div style='text-align:right'><a href='#' id='layer_close'><img src='닫기이미지​' /></a></div> </div> </div>   <div class="layer"> <div class="bg"></div> <div class="layer_area" id="layer2">    // id값이 layer2인 창​   <div> <iframe src='주소​2' ></iframe> </div> <div style='text-align:right'><a href='#' id='layer_close'><img src=​'닫기이미지' /></a></div> </div> </div> <script> function layer_open(el){ $('.layer').fadeIn();var temp = $('#' + el);temp.fadeIn(); if (temp.outerHeight() < $(document).height() ) temp.css('margin-top', '-'+temp.outerHeight()/2+'px'); else temp.css('top', '0px'); if (temp.outerWidth() < $(document).width() ) temp.css('margin-left', '-'+temp.outerWidth()/2+'px'); else temp.css('left', '0px'); } $('#page_layer_open').click(function(){ layer_open('layer1'); }); $('#page_edit_open').click(function(){ layer_open('layer2'); });  $('.layer .bg').click(function(){ $('.layer').fadeOut(); }); $('#layer_close').click(function(){ $('.layer').fadeOut(); }); </script>

답변 1개

채택된 답변
+20 포인트

layer1 이 class=layer 로 감싸져 있고

layer2 도 class=layer 로 감싸져 있는데

function layer_open(el){

 $('.layer').fadeIn(); <-- 이게 실행 되면서 2개 모두 보이는겁니다

 위 코드 수정

vv= el.replace('layer','') -1;

$('.layer').eq(vv).fadeIn();


 

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

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

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

로그인
🐛 버그신고