Как динамически вставить класс CSS с помощью PHP? - PullRequest
5 голосов
/ 31 мая 2011

Что не так со следующим кодом?Я хотел бы динамически вставлять «текущий» класс CSS при нажатии на соответствующий элемент <li>.Спасибо!

<?php 
$pg = $_SERVER['PHP_SELF']; 
?>

<section>
    <aside>       
        <nav>
            <ul>
                <li class="<?php if($pg == 'index.php?page=about.php'){echo 'current';} ?>"><a href="index.php?page=about.php">About</a></li>                       
            <li class=""><a href="">Services</a></li> 
            </ul>
        </nav>
    </aside>
<section>

Ответы [ 5 ]

9 голосов
/ 31 мая 2011

Попробуйте с:

<?php 
$pg = $_GET['page'];

$allow = array('about.php', 'main.php', 'other.php');
if ( !in_array($pg, $allow) ) {
    $pg = 'default_value';
}
?>

<section>
    <aside>       
        <nav>
            <ul>
                <li class="<?php if($pg == 'about.php'){echo 'current';} ?>"><a href="index.php?page=about.php">About</a></li>                       
            <li class=""><a href="">Services</a></li> 
            </ul>
        </nav>
    </aside>
<section>
2 голосов
/ 31 мая 2011
<li class="<?php echo ($_GET['page'] == 'about.php')? 'current' : 'normal'; ?>">
  <a href="index.php?page=about.php">About</a>
</li>
1 голос
/ 31 мая 2011

$_SERVER['PHP_SELF'] будет начинаться с / и не будет содержать строку запроса.

Возможно, вместо этого следует проверить $_GET['page'].

1 голос
/ 31 мая 2011

$_SERVER['PHP_SELF'] не возвращает переменные $ _GET (?page=about.php)

0 голосов
/ 31 мая 2011

Хорошо, если вы ищете клик во время выполнения, вам нужен javascript, а не php.Примерно так с помощью jQuery будет работать у вас:

$(document).ready(function(){
    $('nav >ul li').click(function(){
        //remove all current classes
        $('.current').removeClass('current');
        $(this).addClass('current');
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...