토글 닫기가 안됩니다. 도와주세요 ㅠㅠ 채택완료
배꾸이
8년 전
조회 2,100
ㅠㅠ 메인에서는 토글을 눌렀을때 열기만 되고 닫히지는 않습니다.
그러나 서브에서는 열기 닫기 모두 정상으로 작동합니다. 무엇이 문제일까요?
html 구조는 이렇습니다
</p><p><div id="btn_side"></p><p> <button type="button" id="side_mn_btn"><a href="#"><span class="sound_only"> 메뉴 열기</span></a></button></p><p><span class="Apple-tab-span" style="white-space:pre"> </span></div></p><p><span class="Apple-tab-span" style="white-space:pre"> </span> <div id="side_menu"></p><p> <div class="side_close"><button type="button">닫기</button></div></p><p> <div class="side_wr add_side_wr"></p><p> <aside id="isroll_wrap" class="side_inner_rel"></p><p> <div class="side_inner_abs"></p><p> <nav class="side_menu"></p><p> <ul></p><p> <?php</p><p> $sql = " select *</p><p> from {$g5['menu_table']}</p><p> where me_mobile_use = '1'</p><p> and length(me_code) = '2'</p><p> order by me_order, me_id ";</p><p> $result = sql_query($sql, false);</p><p> </p><p> for ($i=0; $row=sql_fetch_array($result); $i++) {</p><p> ?></p><p> <li class="mu_title"></p><p> <?php</p><p> $submenus = '';</p><p> </p><p> $sql2 = " select *</p><p> from {$g5['menu_table']}</p><p> where me_mobile_use = '1'</p><p> and length(me_code) = '4'</p><p> and substring(me_code, 1, 2) = '{$row['me_code']}'</p><p> order by me_order, me_id ";</p><p> $result2 = sql_query($sql2);</p><p> </p><p> for ($k=0; $row2=sql_fetch_array($result2); $k++) {</p><p> if($k == 0) {</p><p> $submenus .= '<button type="button" class="sub_toggle">하위메뉴</button>'.PHP_EOL;</p><p> $submenus .= '<ul class="sub_menu">'.PHP_EOL;</p><p> }</p><p> </p><p> $submenus .= '<li><a href="'.$row2['me_link'].'" target="_'.$row2['me_target'].'" class="gnb_2da">'.$row2['me_name'].'</a></li>'.PHP_EOL;</p><p> }</p><p> </p><p> if($k > 0)</p><p> $submenus .= '</ul>'.PHP_EOL;</p><p> </p><p> if($submenus)</p><p> $gnb_class = 'sd_cl';</p><p> else</p><p> $gnb_class = 'sd_cl';</p><p> ?></p><p> <a href="<?php echo $row['me_link']; ?>" target="_<?php echo $row['me_target']; ?>" class="<?php echo $gnb_class; ?>"><?php echo $row['me_name'] ?></a></p><p> <?php echo $submenus; ?></p><p> </li></p><p> <?php</p><p> }</p><p> </p><p> if ($i == 0) { ?></p><p> <li id="side_menu_empty">메뉴 준비 중입니다.<?php if ($is_admin) { ?>
<a href="<?php echo G5_ADMIN_URL; ?>/menu_list.php">관리자모드 > 환경설정 > 메뉴설정</a>에서 설정하세요.<?php } ?></li></p><p> <?php } ?></p><p> </ul></p><p> </nav></p><p> </div></p><p> </aside></p><p> </div></p><p> </div></p><p><span class="Apple-tab-span" style="white-space:pre"> </span></div></p><p>
그리고 쿼리는 이렇습니다
</p><p>//사이드 메뉴</p><p>var $btn_side = $("#btn_side"),</p><p> $side_menu = $("#side_menu"),</p><p> $side_wr = $("#side_menu .side_wr"),</p><p> side_obj = { my : {} },</p><p> is_trans_sup = '';</p><p> </p><p>$side_wr.css({"right":"-280px"}); //초기화</p><p> </p><p>side_obj.destory = function(){</p><p> if( !is_trans_sup ) return;</p><p> side_obj.my.destroy();</p><p>}</p><p>side_obj.refresh = function(){</p><p> if( !is_trans_sup ) return;</p><p> side_obj.my.refresh();</p><p>}</p><p> </p><p>function iscroll_loaded() {</p><p> if( is_trans_sup ){</p><p> $side_wr.removeClass("add_side_wr");</p><p> side_obj.my = new IScroll('#isroll_wrap', { bounceTime : 400, mouseWheel: true, click: true, hScroll:false });</p><p> }</p><p>}</p><p> </p><p>$btn_side.on("click", function() {</p><p> if (!$(this).data('toggle_enable')) {</p><p> $(this).data('toggle_enable', true);</p><p> $side_menu.show();</p><p> $side_wr.animate({"right": "0px"}, 200, function(){</p><p> iscroll_loaded();</p><p> height_update($(this));</p><p> });</p><p> } else {</p><p> remove_side_data();</p><p> }</p><p>});</p><p> </p><p>$(document).on("click", ".side_close", function(e){</p><p> if ( !$(e.target).closest("#btn_side").length && $btn_side.data('toggle_enable') ){</p><p> remove_side_data();</p><p> }</p><p>})</p><p> </p><p>function height_update(target){</p><p> var side_wr_height = target.height();</p><p> $("body").css({"min-height":side_wr_height+"px"}).addClass("over_hidden");</p><p>}</p><p> </p><p>function remove_side_data(){</p><p> $btn_side.data('toggle_enable', false);</p><p> $side_wr.animate({"right": "-280px"}, 160, function(){</p><p> $side_menu.hide();</p><p> $("body").removeClass("over_hidden").css({"min-height":""});</p><p> });</p><p>}</p><p> </p><p>$("#side_menu .side_wr").on("clickoutside", function(e){</p><p> //if ( !$(e.target).is('#btn_side *, #btn_side') ){</p><p> if ( !$(e.target).closest("#btn_side").length && $btn_side.data('toggle_enable') ){</p><p> remove_side_data();</p><p> }</p><p>});</p><p> </p><p>// 서브메뉴 열기</p><p>$(function (){</p><p> $(".sub_toggle").on("click", function() {</p><p> var $this = $(this);</p><p> $sub_ul = $(this).closest("li").children("ul.sub_menu");</p><p> </p><p> if($sub_ul.size() > 0) {</p><p> var txt = $this.text();</p><p> </p><p> if($sub_ul.is(":visible")) {</p><p> txt = txt.replace(/닫기$/, "열기");</p><p> $this</p><p> .removeClass("sd_cl")</p><p> .text(txt);</p><p> } else {</p><p> txt = txt.replace(/열기$/, "닫기");</p><p> $this</p><p> .addClass("sd_cl")</p><p> .text(txt);</p><p> }</p><p> </p><p> $sub_ul.toggle();</p><p> }</p><p> });</p><p>});</p><p></script></p><p>
댓글을 작성하려면 로그인이 필요합니다.
답변 1개
채택된 답변
+20 포인트
답변에 대한 댓글 5개
�
배꾸이
8년 전
http://kad.four-1.com/ 이 사이트입니다 ㅠㅠ 도와주십시오...
�
마스타
8년 전
사이드메뉴 스크립트 중에
$(document).on("click", ".side_close", function(e){
if ( !$(e.target).closest("#btn_side").length && $btn_side.data('toggle_enable') ){
remove_side_data();
}
})
여기서, 조건에 해당하는 두 값을 한번 찍어 보세요.
즉, remove_side_data() 를 타는지 확인해 보세요.
$(document).on("click", ".side_close", function(e){
if ( !$(e.target).closest("#btn_side").length && $btn_side.data('toggle_enable') ){
remove_side_data();
}
})
여기서, 조건에 해당하는 두 값을 한번 찍어 보세요.
즉, remove_side_data() 를 타는지 확인해 보세요.
�
배꾸이
8년 전
어렵네요.. ㅠㅠ 초보라서 제가..
예시를 하나 들어주시면 안될까요? ㅠ
예시를 하나 들어주시면 안될까요? ㅠ
�
마스타
8년 전
$(e.target).closest("#btn_side").length
$btn_side.data('toggle_enable')
이 두 값을 찍어 보세요. alert 해 보세요.
$(e.target).closest("#btn_side").length 는 0
$btn_side.data('toggle_enable') 는 true
가 나와야 합니다.
$btn_side.data('toggle_enable')
이 두 값을 찍어 보세요. alert 해 보세요.
$(e.target).closest("#btn_side").length 는 0
$btn_side.data('toggle_enable') 는 true
가 나와야 합니다.
�
배꾸이
8년 전
서브에서는 올바로 작동해서 메인에 뭐가 문제인지 하나씩 지워보니
라테스트 스킨과 충돌이 되는것 같습니다. 라테스트를 지우니 메인에서도 닫기 버튼이 작동합니다!
라테스트 스킨과 충돌이 되는것 같습니다. 라테스트를 지우니 메인에서도 닫기 버튼이 작동합니다!
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인