I have a predicament. I have a menu, that is structured the following:
<ul class="main-menu">
<li class="menu-item" <a href="">Menu item 1</a>
</li>
<ul class="sub-menu">
<li class="menu-item"><a href="">Submenu item 1</a></li>
<li class="menu-item has-children"><a href="">Submenu item 2</a></li>
<ul class="sub-menu">
<li class="menu-item"><a href="">Sub-sub menu item 1</a></li>
<li class="menu-item"><a href="">Sub-sub menu item 2</a></li>
</ul>
<li class="menu-item"><a href="">Submenu 3</a></li>
<li class="menu-item has-children"><a href="">Submenu 4</a></li>
<ul class="sub-menu">
<li class="menu-item"><a href="">Sub-sub menu item 3</a></li>
<li class="menu-item"><a href="">Sub-sub menu item 4</a></li>
</ul>
</ul>
<li class="menu-item" <a href="">Menu item 2</a>
</li>
</ul>
I need to systematically assign a new border colour to EACH "a" tag in the list, to create a rainbow border effect (so first "A" found (Menu item 1) has blue border, second "a" (Submenu item 1) has red, third (Sub-sub menu item 1) has pink, fourth (Sub-sub menu item 2) has green, etc).
The problem is, because there are sub-menu's inside sub-menu's, I cannot use the :nth-child psuedo, because it doesn't include children in the counts. Like this for example:
ul li a:nth-child(1) {
border: 1px solid blue;
}
ul li a:nth-child(2) {
border: 1px solid pink;
}
Is there a way to systematically go through each "a" inside the main-menu class, and add different css to each item? In a future proof way, so if the menu changes (e.g. second top-level menu item is added, or an additional submenu item is added), then colours still follow the same order?
Ideally via CSS, but open to jQuery ideas also!