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

토글 닫기가 안됩니다. 도와주세요 ㅠㅠ 채택완료

배꾸이 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">관리자모드 &gt; 환경설정 &gt; 메뉴설정</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 포인트
8년 전

이런 질문은 실제 사이트를 보여 주시는 것이 좋습니다. 

 

개발자 도구나 요소 검사 등에서 에러가 나는지 확인해 볼 수 있습니다. 

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

답변에 대한 댓글 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() 를 타는지 확인해 보세요.
배꾸이
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
가 나와야 합니다.
배꾸이
8년 전
서브에서는 올바로 작동해서 메인에 뭐가 문제인지 하나씩 지워보니
라테스트 스킨과 충돌이 되는것 같습니다. 라테스트를 지우니 메인에서도 닫기 버튼이 작동합니다!

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

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

로그인