채택완료

menu에 active 걸기

2023-09-18 (월) 10:58:50 1,927

menu 갯수는 총 3개입니다.

어바웃 / 패키지 / 질문답변

"각 페이지.php 는 index.php와 같은 루트내에 위치합니다."

아래와 같이 했을때 각각 페이지들에 있어서 active 가 정상 활성화되나,

문제는 index.php에서 모든 메뉴에 active가 걸리게 되네요.

왜이러는지 아시는분 계실까요.

1. 메뉴 소스

Copy
<nav class="header_nav">
      <ul>
        <?php
        $menu_datas = get_menu_db(0, true);
        $gnb_zindex = 999; // gnb_1dli z-index 값 설정용
        $i = 0;
        foreach( $menu_datas as $row ){
            if( empty($row) ) continue;
            $add_class = (isset($row['sub']) && $row['sub']) ? 'gnb_al_li_plus' : '';
        ?>
        <li class="gnb_1dli <?php echo $add_class; ?>" style="z-index:<?php echo $gnb_zindex--; ?>">
            <a href="<?php echo $row['me_link']; ?>" target="_<?php echo $row['me_target']; ?>" class="gnb_1da"><?php echo $row['me_name'] ?></a>
            <?php
            $k = 0;
            foreach( (array) $row['sub'] as $row2 ){

                if( empty($row2) ) continue; 

                if($k == 0)
                    echo '<span class="bg">하위분류</span><div class="gnb_2dul"><ul class="gnb_2dul_box">'.PHP_EOL;
            ?>
                <li class="gnb_2dli"><a href="<?php echo $row2['me_link']; ?>" target="_<?php echo $row2['me_target']; ?>" class="gnb_2da"><?php echo $row2['me_name'] ?></a></li>
            <?php
            $k++;
            }   //end foreach $row2

            if($k > 0)
                echo '</ul></div>'.PHP_EOL;
            ?>
        </li>
        <?php
        $i++;
        }   //end foreach $row

        if ($i == 0) {  ?>
            <li class="gnb_empty">메뉴 준비 중입니다.<?php if ($is_admin) { ?> <a href="<?php echo G5_ADMIN_URL; ?>/menu_list.php">관리자모드 &gt; 환경설정 &gt; 메뉴설정</a>에서 설정하실 수 있습니다.<?php } ?></li>
        <?php } ?>
      </ul>
    </nav>

2. 스크립트 

Copy
<script>
$('.header_nav a').each(function() {
    
    let _href = $(this).attr('href');
    
    if (_href.indexOf(location.pathname) > -1)
        $(this).parent().addClass('active');
    else
        $(this).parent().removeClass('active');
});
</script>

3. 스타일시트

Copy
.header_nav ul li.active a { color: blue; }
|

답변 1개

채택된 답변
+20 포인트

href가 다 똑같으면 그렇습니다. parameter 까지 체크해보세요.

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