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

menu에 active 걸기 채택완료

myfree 2년 전 조회 1,683

menu 갯수는 총 3개입니다.

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

 

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

 

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

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

 

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

 

 

 

1. 메뉴 소스

</p>

<p>    <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 ){</p>

<p>                if( empty($row2) ) continue; </p>

<p>                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</p>

<p>            if($k > 0)

                echo '</ul></div>'.PHP_EOL;

            ?>

        </li>

        <?php

        $i++;

        }   //end foreach $row</p>

<p>        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></p>

<p>

 

 

2. 스크립트 

</p>

<p><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></p>

<p>

 

 

3. 스타일시트

</p>

<p>.header_nav ul li.active a { color: blue; }</p>

<p>

 

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

답변 1개

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

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

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

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

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

로그인