html — добавление активного класса к родительскому и дочернему элементу, когда дочерний элемент активен с помощью переполнения стека

Есть ли решение для каждого дочернего элемента Subpage1.php или же Subpage2.php активен, так что родительский элемент practices.php также получает class="active"?

<ul>
<li class="<?php echo ($_SERVER['PHP_SELF'] == " /index.php " ? "active " : " ");?>">
<a href="index.php">Start</a>
</li>
<li class="<?php echo ($_SERVER['PHP_SELF'] == " /practices.php " ? "active " : " ");?>">
<a href="practices.php">Practices</a>
<ul>
<li class="<?php echo ($_SERVER['PHP_SELF'] == " /subpage1.php " ? "active " : " ");?>">
<a href="subpage1.php">Subpage1</a>
</li>
<li class="<?php echo ($_SERVER['PHP_SELF'] == " /subpage2.php " ? "active " : " ");?>">
<a href="subpage2.php">Subpage2</a>
</li>
</ul>
</li>
</ul>

Подобный вопрос был задан здесь, но проблема родительского ребенка не могла быть решена там

0

Решение

Это не оптимально, но вы можете проверить значение $_SERVER['PHP_SELF'] против элемента и его детей, использующих in_array():

<li class="<?php echo (in_array($_SERVER['PHP_SELF'], array(
'/practices.php',
'/subpage1.php',
'/subpage2.php',
)) ? "active " : " ");?>">
<a href="practices.php">Practices</a>
...
</li>

Если $_SERVER['PHP_SELF'] соответствует любому из элементов в этом массиве, класс будет активным. Это может быть менее громоздким, чем петля.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]